我想在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