2012-12-26 1 views
0

저는 VC++ 2010과 Windows 7을 사용하고 있습니다.두 개의 다른 소스에서 UDP 데이터 그램을 수신 할 수 있습니까?

두 개의 UDP 소스와 단 하나의 수신기가 있습니다. source1이 1, 3, 5를 전송한다고 가정하고 source2가 2, 4, 6을 전송한다고 가정합니다. 같은 함수에서 1,2,3,4,5,6을 받고 싶습니다 (숫자 순서는 중요하지 않음). 지금까지 2 개의 다른 포트에서 수신하는 2 개의 소켓을 만들어 데이터를 수신 한 다음 결합했습니다.

단일 소스 인스턴스를 사용하여 여러 소스에서 UDP 트래픽을 수신하려면 어떻게해야합니까?

답변

4

수신 측에서는 단일 소켓을 만들어 일부 포트에 바인딩합니다. 그런 다음 두 발신자가 대상 주소에서이 포트를 지정하여 sendto을 호출합니다. 이것은 트릭을해야합니다.

UDP 작업에 대해 기억해야 할 몇 가지 사항이 있습니다. 데이터 그램이 도착하는 순서는 지정되지 않습니다. 어떤 데이터 그램도 배달되지 않았는지 알 수 없습니다. 게다가 여러 번 중복 데이터 그램을 얻을 수도 있습니다.

관련 문제