对不起,如果这个问题太基本了——这是我第一次尝试在 Python 中使用多线程套接字。
基本上,我正在尝试编写代码来获取 UDPServer 套接字接收的数据;套接字本身在线程内部运行。为了使主线程可以访问数据,我正在使用线程本地存储(根据我阅读的所有内容,这似乎是正确的方法). 下面的代码是我第一次尝试使它工作,但变量似乎没有正确更新。对可能发生的事情有任何想法吗?
编辑:请参阅下面的工作示例
服务器:
import socket
import threading
import SocketServer
data = threading.local()
class UDPHandler(SocketServer.BaseRequestHandler):
def handle(self):
data.outputString = self.request[0].strip()
class ThreadedUDPServer(SocketServer.ThreadingMixIn, SocketServer.UDPServer):
def __init__(self, serverAddress, handlerClass):
SocketServer.UDPServer.__init__(self, serverAddress, handlerClass)
data.outputString = ""
if __name__ == "__main__":
ReceiverSocket = ThreadedUDPServer(("localhost",11111), UDPHandler)
ServerThread = threading.Thread(target=ReceiverSocket.serve_forever)
ServerThread.daemon = True
ServerThread.start()
while 1:
if data.outputString:
print data.outputString
data.outputString = ""
客户:
import socket
import sys
HOST, PORT = "localhost", 11111
data = " ".join(sys.argv[1:])
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(data + "\n", (HOST, PORT))
谢谢!!