多客户端UDP服务器python



我想用Python实现一个UDP服务器。

我希望能够等待一些客户连接并同时与其他客户聊天。

我尝试使用SocketServer实现

import SocketServer
class MyUDPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        data = self.request[0].strip()
        socket = self.request[1]
        print("{} wrote:".format(self.client_address))
        print("data -> ", data)
        socket.sendto(data.upper(), self.client_address)
if __name__ == "__main__":
    HOST, PORT = "localhost", 9999
    server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler)
    server.serve_forever()

通过此实现,我可以将数据从不同的客户端发送到此服务器。

需要明确的是,当客户端向服务器发送UDP数据以便能够与他通信时,我想做的是进入另一个功能。但同时,我仍然希望其他客户端能够发送UDP数据。我想多线程将是一个解决方案?

我不确定清楚。。。

UDP是无连接的。因此,您只需使用一个SocketServer就可以接收来自多个客户端的消息,并使用client_address将客户端彼此区分开来。您不需要线程或多个进程。

由于它是一个聊天服务器,传出的消息可能总是对传入的消息作出响应,但如果您也想发送未经请求的消息,则应该将serve_forever()替换为handle_request(),并在__init__()中设置self.timeout。通过这种方式,您可以检查是否需要定期执行额外的操作,例如,每分钟一次,您可以发送心跳或其他任何操作。

最新更新