Windows 7上未定义“SO_REUSEPORT”

时间:2012-11-30 00:15:35

标签: 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

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

1 个答案:

答案 0 :(得分:2)

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

s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)

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