多客户端UDP服务器python

时间:2015-02-05 14:20:37

标签: python sockets udp

我想用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数据。我想多线程将是一个解决方案?

我不太清楚......

1 个答案:

答案 0 :(得分:2)

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

由于它是聊天服务器,外发邮件可能始终响应传入邮件,但如果您希望能够发送未经请求的邮件,则应将serve_forever()替换为handle_request()并在self.timeout中设置__init__()。通过这种方式,您可以检查是否需要定期执行额外操作,例如:每分钟一次,你可以发送心跳等等。