“SO_REUSEPORT”未在 Windows 7 上定义

k3i*_*3it 5 python sockets

我发现多个答案建议在多个 UDP 客户端需要侦听同一端口上的广播时使用 SO_REUSEPORT 套接字选项。但是,我收到一个错误,提示此选项不可用。使用 python 2.7

from socket import *
s = socket(AF_INET, SOCK_DGRAM)
s.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)
try:
    s.bind(('', MYPORT))
except:
    print "Error connecting to the UDP stream."


Traceback (most recent call last):
  File "qsorder.py", line 119, in <module>
    s.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)
NameError: name 'SO_REUSEPORT' is not defined
Run Code Online (Sandbox Code Playgroud)

我试过 SO_REUSEADDR 并且它没有给出错误但只有一个客户端接收广播。知道如何解决这个问题吗?

Nik*_*sov 3

您需要SO_BROADCAST在每个套接字上设置选项:

s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
Run Code Online (Sandbox Code Playgroud)

SO_REUSEPORT不是标准的,通常与SO_REUSEADDR支持的含义相同。