Gå til innhold

[Løst] [Python] UDP multicast


Anbefalte innlegg

Er det noen her som har fått UDP multicast til å fungere? (jeg må ha det til å fungere på python 2.4)

 

Jeg har lest her:

http://wiki.python.org/moin/UdpCommunication

her:

http://stackoverflow.com/questions/603852/multicast-in-python

og her:

http://svn.python.org/projects/python/trunk/Demo/sockets/mcast.py

 

Men jeg får ingenting til å fungere.

 

I all hovedsak så er det dette som feiler:

 

mreq = struct.pack("4sl", socket.inet_aton(SERVEREN_SIN_IP), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) #Her feiler det alltid

 

Alltid med denne feilmeldingen:

 

Traceback (most recent call last):
 File "server.py", line 71, in <module>
   receiver(MYGROUP_4)
 File "server.py", line 58, in receiver
   s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
 File "/usr/lib/python2.7/socket.py", line 224, in meth
   return getattr(self._sock,name)(*args)
socket.error: [Errno 22] Invalid argument

 

Noen som har peiling?

 

EDIT: Jeg har ikke lov til å bruke noe 3. parts lib.

Endret av xibriz
Lenke til kommentar
Videoannonse
Annonse

mreq = struct.pack("4sl", socket.inet_aton(SERVEREN_SIN_IP), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) #Her feiler det alltid

 

med SERVEREN_SIN_IP så mener du da altså f.eks 192.168.1.1? Hvis ja, så er det feil. Du må bruke en multicast gruppe. Multicast grupper kan ha ip fra 224.0.0.0 til 239.255.255.255. Noen ip'er er reserverte, men det finner du mer info om dersom du søker litt på multicast.

 

f.eks - la oss si at din servers ip er 192.168.1.1 da må du alikevel gjøre f.eks:

mreq = struct.pack("4sl", socket.inet_aton("238.1.1.1"), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

 

Husk at senderen også må sette TTL etter følgende mønster:

0: Pakken er begrenset til samme host

1: Pakken er begrenset til samme subnet

<32: Pakken er begrenset til samme område/avdeling/organisasjon

<64: Pakken er begrenset til samme region

<128: Pakken er begrenset til samme kontinent

<255: Global.

Endret av oelbox
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...