Re: UDP reading on multiple sockets
In message 27bd949f-80b5-44c9-8e3b- c12b49c7e...@r34g2000vbi.googlegroups.com, thomas.vo...@likeabird.de wrote: The only honest answer would be that I'm totaly unfamiliar with select and also the documentation I found wasn't able to clear the picture. So are there examples of using select together with sockets available? select is easy to use. In Python, you just pass it three lists of file-like objects (anything that implements fileno in the way described in the docs), together with an optional timeout. It will return three corresponding lists, being subsets of the ones you passed (which might all be empty if the timeout expired). You then just go through each item in each returned list, doing reads (or accepts, as appropriate) from the files that have something waiting to be read, writing to the ones waiting for something to be written, and perhaps reporting errors and closing the ones that report problems. That's basically all there is to it. This example, of how do implement a timeout on I/O http://codecodex.com/wiki/index.php?title=I/O_With_Timeout, is in C, but it should help you get the idea. -- http://mail.python.org/mailman/listinfo/python-list
Re: UDP reading on multiple sockets
On 17 Mai, 04:22, Grant Edwards gra...@visi.com wrote: On 2009-05-17, Thomas Vogel thomas.vo...@likeabird.de wrote: I'm currently have the problem that I try to read UDP messages from multiple sockets in parallel. So let's say I get UDP packets from the same IP on the ports 2000, 2001, 2002,... Is there any reason you can't do it the easy way by using select? http://docs.python.org/library/select.html -- Grant The only honest answer would be that I'm totaly unfamiliar with select and also the documentation I found wasn't able to clear the picture. So are there examples of using select together with sockets available? Kind regards Thomas -- http://mail.python.org/mailman/listinfo/python-list
Re: UDP reading on multiple sockets
Hi! On Mon, 18 May 2009 06:19:01 -0700 (PDT) thomas.vo...@likeabird.de wrote: [...] The only honest answer would be that I'm totaly unfamiliar with select and also the documentation I found wasn't able to clear the picture. So are there examples of using select together with sockets available? If you want to write something related to networks you should know this book: http://www.kohala.com/start/unpv12e.html Also found at http://www.amazon.de/UNIX-Network-Programming-Sockets-Networking/dp/013490012X MfT Guido -- http://mail.python.org/mailman/listinfo/python-list
Re: UDP reading on multiple sockets
On 2009-05-18, thomas.vo...@likeabird.de thomas.vo...@likeabird.de wrote: On 17 Mai, 04:22, Grant Edwards gra...@visi.com wrote: On 2009-05-17, Thomas Vogel thomas.vo...@likeabird.de wrote: I'm currently have the problem that I try to read UDP messages from multiple sockets in parallel. So let's say I get UDP packets from the same IP on the ports 2000, 2001, 2002,... Is there any reason you can't do it the easy way by using select? http://docs.python.org/library/select.html The only honest answer would be that I'm totaly unfamiliar with select and also the documentation I found wasn't able to clear the picture. So are there examples of using select together with sockets available? http://www.google.com/search?q=python+select+example http://www.amk.ca/python/howto/sockets/ http://code.activestate.com/recipes/531824/ http://mail.python.org/pipermail/python-list/2001-February/071302.html http://squirl.nightmare.com/medusa/async_sockets.html -- Grant -- http://mail.python.org/mailman/listinfo/python-list
Re: UDP reading on multiple sockets
On Mon, 18 May 2009 06:19:01 -0700 (PDT), thomas.vo...@likeabird.de wrote: On 17 Mai, 04:22, Grant Edwards gra...@visi.com wrote: On 2009-05-17, Thomas Vogel thomas.vo...@likeabird.de wrote: I'm currently have the problem that I try to read UDP messages from multiple sockets in parallel. So let's say I get UDP packets from the same IP on the ports 2000, 2001, 2002,... Is there any reason you can't do it the easy way by using select? http://docs.python.org/library/select.html -- Grant The only honest answer would be that I'm totaly unfamiliar with select and also the documentation I found wasn't able to clear the picture. So are there examples of using select together with sockets available? You might find Twisted easier to use correctly than the select module. You can find some basic Twisted/UDP documentation here: http://twistedmatrix.com/projects/core/documentation/howto/udp.html You can trivially change the first example to handle multiple sockets - just add more reactor.listenUDP calls. Jean-Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: UDP reading on multiple sockets
On May 18, 6:19 am, thomas.vo...@likeabird.de wrote: On 17 Mai, 04:22, Grant Edwards gra...@visi.com wrote: On 2009-05-17, Thomas Vogel thomas.vo...@likeabird.de wrote: I'm currently have the problem that I try to read UDP messages from multiple sockets in parallel. So let's say I get UDP packets from the same IP on the ports 2000, 2001, 2002,... Is there any reason you can't do it the easy way by using select? http://docs.python.org/library/select.html -- Grant The only honest answer would be that I'm totaly unfamiliar with select and also the documentation I found wasn't able to clear the picture. So are there examples of using select together with sockets available? My two cents on this issue is that you should stick with asyncore for now and just figure out how to debug better what's going on. I understand the rationale behind the alternatives--there are certainly advantages (even in debugging) to using something closer to the metal, like select, or in using something that might be a better abstraction, like Twisted. But really, if you look at the source code for asyncore, it's just a thin layer on top of select.select, and the entire module is under 600 lines of code. Asyncore is much maligned, and there are some legitimate beefs with it, but it does well, for the most part, what it intends to do, which is to solve some of the more difficult, or at least tedious, problems with regards to dealing with select.select. My fear is that if you try to do this without asyncore, via select, you'll end up reinventing lots of asyncore with lots of your own bugs. I have less fear about going higher in the stack, except that it just puts another layer on top of the problem, and I think the issue you're dealing with is fairly low-level. So my suggestion is to figure out a good debugging strategy, either by getting a bit more familiar with asyncore internals (with a debugger, print statements, analysis, etc.), or by better using system tools (like snoop, truss, etc.) to see what's happening at the I/O level, or both. Good luck! Steve -- http://mail.python.org/mailman/listinfo/python-list
Re: UDP reading on multiple sockets
thomas.vo...@likeabird.de wrote: On 17 Mai, 04:22, Grant Edwards gra...@visi.com wrote: On 2009-05-17, Thomas Vogel thomas.vo...@likeabird.de wrote: I'm currently have the problem that I try to read UDP messages from multiple sockets in parallel. So let's say I get UDP packets from the same IP on the ports 2000, 2001, 2002,... Is there any reason you can't do it the easy way by using select? http://docs.python.org/library/select.html -- Grant The only honest answer would be that I'm totaly unfamiliar with select and also the documentation I found wasn't able to clear the picture. So are there examples of using select together with sockets available? Kind regards Thomas You could also try Twisted : http://twistedmatrix.com/trac/ Best, Gabriel -- http://mail.python.org/mailman/listinfo/python-list
Re: UDP reading on multiple sockets
On 2009-05-17, Thomas Vogel thomas.vo...@likeabird.de wrote: I'm currently have the problem that I try to read UDP messages from multiple sockets in parallel. So let's say I get UDP packets from the same IP on the ports 2000, 2001, 2002,... Is there any reason you can't do it the easy way by using select? http://docs.python.org/library/select.html -- Grant -- http://mail.python.org/mailman/listinfo/python-list