我想在Python中使用扭曲编写多线程服务器。 callInThread(self.task)是每次客户端从服务器请求时创建一个新线程来运行task()。当客户端发送请求一一(全部通过53端口),一切正常,但是当有在同一时间多个请求,它说地址已经在使用扭曲的多线程服务器
File "", line 1, in bind socket.error: [Errno 98] Address already in use
有某事错了我的线程,只有一个可以使用港口一次?如果是这样,我应该如何处理多线程服务器? 非常感谢!
class BaseThreadedUDPServer(DatagramProtocol):
def datagramReceived(self, datagram, (host, port)):
print "received %r from %s:%d" % (datagram, host, port)
reactor.callInThread(self.task)
def task(a):
print "waiting on port:", csport
while 1:
## RCV QUERY ##
query, addr = csSocket.recvfrom(csbuf)
## GET ANS ##
ans = socket.gethostbyname(query)
## SEND ANS ##
scSocket.sendto(ans, scaddr)
def main():
print "main"
reactor.listenUDP(53, BaseThreadedUDPServer())
reactor.run()
@pilu:看起来好像你根本不会扭曲......你并不需要线程来并行处理事实,事实上你应该完全避免它们。 – 2010-12-06 13:24:47