umm*_*umm 1 python multithreading
我正在尝试用 python 编写一个多线程服务器,它可以接收多个客户端请求,然后在 UDP 数据包(端口 53)中发送答案。我想知道所有这些线程是否可以同时使用 53。非常感谢(这个问题可能看起来很愚蠢,我是初学者)
如果您指定“重用端口”选项,那么您可以将多个侦听套接字绑定到同一端口。但根据我的经验,即使这样做,也只有一个套接字会收到任何给定的数据包(除非您正在接收多播数据包)。
mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
Run Code Online (Sandbox Code Playgroud)
通常,当您谈论“多线程服务器”时,您谈论的是使用“面向连接”协议(通过 TCP,而不是 UDP)的服务器,其中有一个服务器套接字侦听连接,然后当连接形成后,它会创建一个线程来处理它。
对于多线程 UDP 服务器,您可能有一个对传入请求进行排队的套接字,并有多个线程从队列中拉出并执行工作。线程本身不需要处理套接字。
(注意:根据您的平台,您可能必须使用 SO_REUSEADDR 来代替。这里有一些信息。)