2013-04-30 2 views
1

이것은 바보처럼 들릴 수 있습니다. 이런 것들에 대한 나의 제한된 지식을 용서해주십시오.파이썬에서 멀티 캐스트 범위 듣기

여러 멀티 캐스트 그룹을 수신 할 수 있습니다. 정확하게 말하면 범위의 주소를 수신 할 수 있습니까? 224.128.*.*? 일반적으로 CIDR 네트워크 마스크는 /16으로 표시됩니다.

현재 내 소켓을 특정 주소에 바인딩하고 있습니다 : sock.bind((ip, port)). 하지만 나는 다양한 주소를 가지고 일해야 할 것이다.

저는 거의 불가능하다고 확신합니다. 그냥 확인하고 싶어.

감사

+0

가능한 속담 : http://stackoverflow.com/questions/603852/multicast-in-python – mdierker

답변

0

그것은 다소 가능 입니다. 예컨대 :

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) 
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
sock.bind(('', 2345)) 

for i in xrange(255): 
    print i 
    mreq = struct.pack("=4sl", socket.inet_aton("224.1.2.%d" % i), 
         socket.INADDR_ANY) 
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) 

불행하게도, 하나의 소켓이 한 번에 결합 할 수있는 방법을 많은 그룹 커널 제한 : 그것은 하나, 조정 가능하지 않습니다 20입니다 (내가 아는 한).

편집 : 실제로는 리눅스에서 /proc/sys/net/ipv4/igmp_max_memberships을 통해 조정할 수 있습니다.

+0

예를 들어 주셔서 감사합니다. 나는이 그룹에 합류 할 수 있다고 말하는이 질문을 보았다. (http://stackoverflow.com/questions/9243292/subscribing-to-multiple-multicast-groups-on-one-socket-linux-c) 할 수있는 한. 당신이 말하고있는 그룹의 수를 제한하는 '20'에 대해 조금 설명 할 수 있습니까? 모든 참조가 도움이 될 것입니다. – gaganbm

+0

내가 잘못 생각한 것 같습니다 :/proc/sys/net/ipv4/igmp_max_memberships는 리눅스에서 이것을 조정할 수있게합니다. 기본적으로 여전히 20입니다. – ldx

+0

감사. 매개 변수에 대한 정보가 있습니다. 그것을 편집에 넣을 것입니다. – gaganbm