我想用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数据。我想多线程将是一个解决方案?
我不太清楚......
答案 0 :(得分:2)
UDP是无连接的。因此,您可以使用您拥有的单个SocketServer
从多个客户端接收消息,并使用client_address
区分客户端。你不需要线程或多个进程。
由于它是聊天服务器,外发邮件可能始终响应传入邮件,但如果您希望能够发送未经请求的邮件,则应将serve_forever()
替换为handle_request()
并在self.timeout
中设置__init__()
。通过这种方式,您可以检查是否需要定期执行额外操作,例如:每分钟一次,你可以发送心跳等等。