2013-04-08 103 views
6

以下是一些用于设置多播接收器的Python代码。它适用于Mac和Linux。Windows上的错误10049 Python多播

import socket, struct 

ADDR='239.239.250.1' 
PORT=8001 

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
sock.bind((ADDR, PORT)) 
mreq = struct.pack("4sl", socket.inet_aton(ADDR), socket.INADDR_ANY) 
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) 

但在窗口上运行时在绑定上收到错误10049。

Z:\winx>c:\Python27\python.exe q2.py 
Traceback (most recent call last): 
    File "q2.py", line 11, in <module> 
    sock.bind((ADDR,PORT)) 
    File "c:\Python27\lib\socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 10049] The requested address is not valid in its context 

是否有已知的Windows多播问题?如果不是,我可以采取什么措施来诊断?

+0

你确定,ip地址“239.239.250.1”是你的机器吗?它似乎是网络网关的。 – Sheng 2013-04-08 04:39:35

+0

@生,这是一个多播地址。 – 2013-04-08 06:09:57

+0

是否尝试将其指定为UDP:'sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP)' – Joram 2014-11-20 21:29:20

回答

0

我有同样的问题,从here我知道你需要绑定到本地主机。 sock.bind(('', PORT))为我工作。