3
나는 멀티 캐스팅을 구현하는 다른 스택 오버플로 응답 (어디에서 기억할 수없는)에서 얻은 python 코드 예제가 있습니다. 다음 코드는 멀티 캐스트 패킷을 수신하기위한 소켓 객체를 설정해야합니다. 는 그래서 같은 클래스에서 캡슐화 :파이썬 홀수 멀티 캐스트 소켓 예외
class Multisock:
def __init__(self, MCAST_GRP, MCAST_PORT, packsize):
import socket
import struct
self.MCAST_GRP = MCAST_GRP
self.MCAST_PORT = MCAST_PORT
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind(('', MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
self.sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
는,이 날이 오류를 제공합니다 : 정말 혼란
Traceback (most recent call last):
File "./Audiorecv.py", line 41, in <module>
sock = MulticastNetworking.Multisock('244.1.1.1', 5007, chunk)
File "/home/wheybags/Multicast-Voice-Chat/MulticastNetworking.py", line 30, in __init__
self.sock.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
때문에 난 그냥 문자열로 정적으로 MCAST_GRP을 설정하는 경우 IP를 나타내는, 그것은 작동하지만 생성자 인수를 사용하려고하면 위의 오류를 제공합니다.
사용하면 어떻게됩니까? 'mreq = struct.pack ("= 4sl", socket.inet_aton (MCAST_GRP), socket.INADDR_ANY) ' –
여전히 동일한 오류가 발생합니다 – wheybags
유효한 [멀티 캐스트 주소] (http : //en.wikipedia. org/wiki/Multicast_address # IPv4) 그렇지 않으면 그 오류가 발생합니다. 244.1.1.1은 유효하지 않으며 오타가있을 수 있습니다. – ext