[Twisted-Python] twisted and gprs
johna at johnaherne.co.uk
Mon Jan 8 14:46:15 EST 2007
Thanks to Phil, Carl and JPCalderone for the replies.
I'll try and answer them by explaining more clearly what I am trying to
do. And explaining some terms that I were vague.
The sessions are a connection that I need to keep open - a combination
of IP address and source port no - so the server can use the source port
number that the PDA used when making the initial connection. The PDA
will need to block on the TCPIP socket waiting for messages to be sent
to it. It will process the message and then wait again. Provided the PDA
does not close the socket and lose the connection with the original port
no, the firewall will let the conversation keep going.
The server will send on the initial source/destination port nos and not
close the connection. This way the PDA can still be contacted over a
long period of time. Because the PDA is behind the network firewall, if
the original port used by the PDA is lost, the server can no longer send
data to the PDA, since the firewall will not let the traffic through
even though the IP address had not changed.
As Carl pointed out I will need more than the IP address to identify the
PDA. I will need an ID from the PDA that is unique so that if the PDA
comes back in with a different IP address I can pick that up, drop the
existing IP/port no if I still have it and register it with it's new IP
address and source port no.
As i write this down, explaining it to myself as much as anyone else, I
think to myself that the mechanics look very much like an irc
connection. I might be wrong so please let me know.
The server will need to ping the PDA to confirm the connection is still
there. If lost it will deregister the PDA and wait for it to reconnect
again. What I am not sure about with irc is whether I can keep hold of
the port no used by the PDA as its source port and maintain the
connection with the IP address/port no combination.
What I would like is if I can find a framework that does most of the
heavy work with the communications. I can then find a suitable point to
make some not too difficult changes to accommodate my requirements.
I have done a very simple test using the socket library to confirm that
the basics do work. The connection stays open and as long as I do not
close the socket connection at either end and use the same
source/destination port numbers the traffic flows.And I can push data
without the PDA having to initiate new connections and requesting data.
I hope this a better explanation than my first post. I am sure there
will still be bits that might not be clear so let me know and I will
fill in any gaps.
If it is clear, what I am looking to find out is which bits of twisted
I would need to use and what parts would need changing and to what extent.
One final note, there could be around 100 of the PDAs to look after.
Thanks for any feedback.
More information about the Twisted-Python