多客户端UDP服务器python

2024-05-15 13:36:37 发布

您现在位置: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数据。我想多线程将是一个解决方案?

我不太清楚。。。


Tags: 数据selfclienthost客户端data客户port
1条回答
网友
1楼 · 发布于 2024-05-15 13:36:37

UDP是无连接的。因此,您可以使用您拥有的单个SocketServer从多个客户机接收消息,并使用client_address区分客户机。您不需要线程或多个进程。

由于它是一个聊天服务器,传出的消息可能总是对传入的消息做出响应,但是如果您也希望能够发送未经请求的消息,则应该将serve_forever()替换为handle_request(),并在__init__()中设置self.timeout。这样你就可以检查是否需要定期执行额外的操作,例如,一分钟一次,你可以发送心跳信号或其他什么。

相关问题 更多 >