多个线程可以使用同一个端口吗

1 投票
2 回答
3484 浏览
提问于 2025-04-16 08:09

我正在尝试用Python写一个多线程的服务器,这个服务器可以接收多个客户端的请求,然后通过UDP数据包(使用53号端口)发送答案。我想知道这些线程是否可以同时使用53号端口。非常感谢!(这个问题可能听起来有点傻,我还是个初学者)

2 个回答

-1

请不要这样做。使用Twisted吧。它已经把这些东西都做好了。

5

如果你选择了“重用端口”的选项,那么是的,你可以把多个监听套接字绑定到同一个端口。不过根据我的经验,即使这样做,通常也只有一个套接字会接收到特定的数据包(除非你在接收多播数据包)。

mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)

通常来说,当你提到“多线程服务器”时,指的是一种使用“面向连接”的协议(比如TCP,而不是UDP)的服务器。在这种情况下,会有一个服务器套接字在监听连接,当有连接建立时,它会创建一个线程来处理这个连接。

对于一个多线程的UDP服务器,你可能会有一个单独的套接字来排队接收请求,然后有多个线程从队列中取出请求并处理。线程本身不需要直接处理套接字。

(注意:根据你的平台,你可能需要使用SO_REUSEADDR。更多信息可以在这里找到。)

撰写回答