Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多客户端UDP服务器python_Python_Sockets_Udp - Fatal编程技术网

多客户端UDP服务器python

多客户端UDP服务器python,python,sockets,udp,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("

我想用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\u address
将客户端彼此区分开来。您不需要线程或多个进程


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

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


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

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


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

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

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