<div dir="ltr"><div><div>Well, you&#39;d presumably have a connection to each of the servers in the form of a client factory and a protocol instance. Then, every time you get a message, you figure out which protocol instance you want (the one for the appropriate server) and send a message to it. You could do that with self.transport.write, of course, but it would be much easier to just use a ready-made RPC thing.<br>

<br>One such RPC thing is AMP, which comes with Twisted. You can read more about it here:<br><br><a href="http://amp-protocol.net/">http://amp-protocol.net/</a><br><a href="https://twistedmatrix.com/documents/current/core/howto/amp.html">https://twistedmatrix.com/documents/current/core/howto/amp.html</a><br>

<br></div>You will probably end up having a command like HandlePacket or something (presumably you can come up with a more apt domain-specific name), and something close to self.servers[serverFor(packet.origin)].callRemote(HandlePacket, packet.data), or whatever.<br>

<br></div>I realize this is still pretty vague and high level, so feel free to ask more questions about the parts that are unclear :)<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 28, 2013 at 10:59 PM, Benjamin BERTRAND <span dir="ltr">&lt;<a href="mailto:beenje@gmail.com" target="_blank">beenje@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I have to replace a piece of software that sniffs the traffic on one interface. It gets different messages that are each associated to a specific emitter.<br>
On the same machine, one server is started for each emitter (on a different port).<br>
And the application is just supposed to use the proper server to send the messages captured (to a client on another machine).<br>
<br>
Not sure if it&#39;s clear, but basically if I have 2 emitters A and B, I&#39;ll start 2 servers (a and b).<br>
My sniffer will get messages A1, A2, B1, B2, B3...<br>
I have to pass messages A1, A2 to server a, that will just send them to the client (if it is connected of course).<br>
And B1, B2, B3 to server b.<br>
I don&#39;t need any buffering. If no client is connected, messages captured are just discarded.<br>
<br>
To sniff the network, I want to use pylibpcap or pcapy.<br>
I found this example to make it work with twisted: <a href="http://dound.com/2009/09/integrating-twisted-with-a-pcap-based-python-packet-sniffer/" target="_blank">http://dound.com/2009/09/integrating-twisted-with-a-pcap-based-python-packet-sniffer/</a><br>


<br>
Starting several servers that use the same protocol is not a problem.<br>
But how do I pass the messages captured to the right server?<br>
How do I make the link between the function sniffing the network and the servers?<br>
<br>
Thanks<br>
<br>
Benjamin<br>
_______________________________________________<br>
Twisted-Python mailing list<br>
<a href="mailto:Twisted-Python@twistedmatrix.com">Twisted-Python@twistedmatrix.com</a><br>
<a href="http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python" target="_blank">http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr">cheers<div>lvh</div></div>
</div>