2013-04-08 36 views
6

Oto trochę kodu Pythona, aby skonfigurować odbiornik multiemisji. Działa dobrze na mac i Linux.Błąd 10049 na Windows Python Multicast

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) 

ale odbiera błąd 10049 na wiązaniu po uruchomieniu w systemie Windows.

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 

Czy znany jest problem z multiemisją w systemie Windows? Jeśli nie, jakie kroki mogę podjąć, aby zdiagnozować?

+0

Czy jesteś pewien, że adres IP "239.239.250.1" to Twój komputer? Wygląda na to, że jest bramą sieciową. – Sheng

+0

@Sheng, to adres multiemisji. –

+0

próbowałeś określając go jako UDP w szczególności: 'sock = socket.socket (socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)' – Joram

Odpowiedz

0

Mam ten sam problem i od here Zrozumiałem, że musisz powiązać się z lokalnym hostem. sock.bind(('', PORT)) pracował dla mnie.