QT와 함께 멀티 캐스트 그룹에 대한 UDP 소켓을 어떻게 열 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1176978

  •  19-09-2019
  •  | 
  •  

문제

QT 및 네트워크 소켓에 대한 질문이 있습니다. 다른 네트워크에 여러 개의 IP 애호가가있는 컴퓨터가있는 경우 특정 네트워크 어두운 곳/IP address에서 멀티 캐스트 그룹에 대한 UDP 소켓을 어떻게 열 수 있습니까?

EG : IP 192.168.2.1 그리고 172.20.0.1 그리고 멀티 캐스트 그룹에서 패킷을 수신하는 소켓을 만들고 싶습니다. 228.5.6.7172.20.0.1 네트워크 어댑터.

도움이 되었습니까?

해결책

당신은 그것을 설정해야합니다 imr_interface 아래와 같이 : (아마도 INADDR_ANY 지금)

struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr("228.5.6.7");
mreq.imr_interface.s_addr = inet_addr("172.20.0.1");// <---- right here
...
QSocketDevice* sdev = new QSocketDevice(QSocketDevice::Datagram);
...
setsockopt(sdev->socket(), IPPROTO_IP, IP_ADD_MEMBERSHIP,(const char *)&mreq, sizeof(struct ip_mreq));
...

다른 팁

청취 소켓 인 경우 Bind to IP 주소를 사용하여 특정 IP 주소에 바인딩 할 수 있습니다. 클라이언트 소켓 인 경우 OS는 라우팅 테이블 규칙에 따라 해당 IP 주소에 도달하기 위해 올바른 인터페이스를 관리하기 위해 올바른 인터페이스를 관리합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top