Hello, I created a really simple udp server and protocol but I only get every 2nd request (and thus answer just every second request).
Maybe someone could shed some light, I'm lost in the dark(tm), sorry if this is a bit oververbose but to me everything that happens here is black magic, and I have no clue where the packages go. I can't think of a simpler protocol than to just receive a fixed max UDP packet size and answer immediately (read an "echo" server). thanks martin ### server >>> from socket import * >>> import SocketServer >>> from SocketServer import BaseRequestHandler, UDPServer >>> class FooReceiveServer(SocketServer.UDPServer): ... def __init__(self): ... SocketServer.UDPServer.__init__(self, ("localhost", 4321), FooRequestHandler) ... >>> class FooRequestHandler(BaseRequestHandler): ... def handle(self): ... data, addr_info = self.request[1].recvfrom(65534) ... print data ... print addr_info ... self.request[1].sendto("response", addr_info) ... >>> f = FooReceiveServer() >>> f.serve_forever() request 0 ('127.0.0.1', 32884) request 1 ('127.0.0.1', 32884) request 2 ('127.0.0.1', 32884) request 2 ('127.0.0.1', 32884) request 2 ('127.0.0.1', 32884) ### client >>> target = ('127.0.0.1', 4321) >>> from socket import * >>> s = socket(AF_INET, SOCK_DGRAM) >>> for i in range(10): ... s.sendto("request " + str(i), target) ... s.recv(65534) ... 9 Traceback (most recent call last): File "<stdin>", line 3, in <module> KeyboardInterrupt >>> s.sendto("request " + str(i), target) 9 >>> str(i) '0' >>> for i in range(10): ... s.sendto("request " + str(i), target) ... s.recv(65534) ... 9 'response' 9 'response' 9 Traceback (most recent call last): File "<stdin>", line 3, in <module> KeyboardInterrupt >>> #this was hanging, why? ... >>> s.sendto("request " + str(i), target) 9 >>> s.recv(65534) 'response' >>> s.sendto("request " + str(i), target) 9 >>> s.recv(65534) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyboardInterrupt >>> s.sendto("request " + str(i), target) 9 >>> s.sendto("request " + str(i), target) 9 >>> s.recv(65534) 'response' >>> s.recv(65534) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyboardInterrupt >>> s.sendto("request " + str(i), target) 9 >>> -- http://noneisyours.marcher.name http://feeds.feedburner.com/NoneIsYours You are not free to read this message, by doing so, you have violated my licence and are required to urinate publicly. Thank you. -- http://mail.python.org/mailman/listinfo/python-list