2010-07-06 3 views
4

다음은 간단한 IPv4 UDP 브로드 캐스트이며 모든 인터페이스에서 수신 대기합니다.파이썬에서 IPv6 링크 - 로컬 멀티 캐스트 UDP 데이터 그램을주고 받습니까?

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True) 
sock.bind(("", 1337)) 
sock.sendto("hello world", ("255.255.255.255", 1337)) 
while True: 
    data, addr = sock.recvfrom(0x100) 
    print "received from {0}: {1!r}".format(addr, data) 

IPv4 및 IPv6 모두를 보내고 받으려면이 값을 조정하고 싶습니다.

나는 주위를 찌르고만큼 내가 할 수있는 다음과 같은 대략 내가 수행해야하는 경로입니다 생각으로 읽었습니다 :

  1. 은 IPv6 소켓을 작성합니다.
  2. 링크 또는 사이트 로컬 멀티 캐스트 그룹에 소켓을 추가하십시오.
  3. UDP 패킷을 사용중인 그룹의 멀티 캐스트 주소로 보냅니다.

추가 정보를 원하시면 내가 가진 내가 여러 인터페이스에 결합해야하고, 그것은 또한 멀티 캐스트 패킷을 수신한다 setsockopt()를 사용하여 소켓을 알 수 있다는 것이다. 마지막으로 getaddrinfo()은 전반적으로 IPv6를 사용할 수없는 IPv4로 정상적으로 "되돌아가는"데 사용할 수 있습니다.

나는 이것을 구현했지만, 주로 멀티 캐스팅 부분에서 우연히 발견된다. 파이썬에서 완전한 코드 예제를 사용하거나 필요한 상수와 주소를 생생하게 설명하는 것이 좋습니다.

답변

1

여기에 python mcast demo에 대한 링크가 있으며 IPv4와 IPv6을 모두 지원합니다.

+0

이것은 나를 위해 작동하지 않았다. http://stackoverflow.com/questions/6631891/problem-with-python-ulticast-demo-code –

+3

@Johny_M 링크가 작동하지 않습니다.를 참조하십시오. – suzanshakya

+0

나를 위해 작동하지 않았다. 최신 듀얼 스택 멀티 캐스트 수신기가 있습니까? – enrm