Python ';因此"重用端口"';未在Windows 7上定义
我找到了多个答案,建议在多个UDP客户端需要在同一端口上侦听广播时使用SO_REUSEPORT socket选项。但是我得到一个错误,这个选项不可用。使用Python2.7Python ';因此"重用端口"';未在Windows 7上定义,python,sockets,Python,Sockets,我找到了多个答案,建议在多个UDP客户端需要在同一端口上侦听广播时使用SO_REUSEPORT socket选项。但是我得到一个错误,这个选项不可用。使用Python2.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
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
从套接字导入*
s=插座(天线、插座)
s、 setsockopt(SOL_插槽,SO_重用端口,1)
尝试:
s、 绑定(“”,MYPORT))
除:
打印“连接到UDP流时出错。”
回溯(最近一次呼叫最后一次):
文件“qsorder.py”,第119行,在
s、 setsockopt(SOL_插槽,SO_重用端口,1)
NameError:未定义名称“SO_REUSEPORT”
我已经尝试了SO_REUSEADDR,它没有给出错误,但只有一个客户端接收广播。你知道如何解决这个问题吗?你需要在每个插座上设置
SO\u BROADCAST
选项:
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
SO\u REUSEPORT
不是标准的,通常与SO\u reuseAdr
在支持的地方有相同的含义。您称之为“广播”是什么?数据报发送到什么地址?udp数据包发送到子网的广播地址(最后八位字节中的255)。我试图在同一台电脑上运行脚本的多个实例,每个实例都在不独占锁定数据报发送到的端口的情况下收听这些广播。使用255.255.255.0
网络掩码?是/24掩码。至少在这种特殊情况下,广播或单播是否真的有区别该标志本身不起作用,但是在SO_广播和SO_REUSEADDR集合中,它看起来更好,并且多个实例正在接收数据包!是的,这就是我的意思-你两者都需要。哎呀,在您的原始代码中没有看到明显的SO_BROADCAST
遗漏。更多信息如下: