2016-08-19 1 views
0

그래서 소켓 (AF_INET, SOCK_RAW, IPPROTO_UDP)이있는 소켓을 만들었습니다. 그리고 무한 루프로 recv()를 사용합니다. 모든 데이터 그램을 캡처 할 수 있다는 것을 알고 있습니다. 그러나 데이터 그램이 올바른 위치로가는 것을 막을 것입니까? 나는 약간의 실험을했다. 한 프로그램에서 다른 프로그램으로 아주 간단한 UDP 메시지를 보냅니다. 그리고 그들은 둘 다 메시지를 받았습니다. 원시 소켓이 UDP 메시지를 차단하지 않는다고 가정합니다. 그런 다음 the second paragraph of this question's best answer에 대해 읽었습니다. 언 바운드 udp 소켓이 시스템을 망칠 것이라고합니다. 그래서 원시 소켓과 같은지 잘 모르겠습니다. 아니면 리눅스와 윈도우에서 다릅니 까?소켓 (AF_INET, SOCK_RAW, IPPROTO_UDP) 올바른 장소로가는 모든 데이터 그램을 중지 할 것인가?

또 다른 빠른 질문 : 포트 (AF_INET, SOCK_RAW, IPPROTO_UDP) 바인딩 소켓, 아무것도하지 않을거야? 나는 그것을했고 소켓은 여전히 ​​모든 종류의 다른 포트로가는 메시지를 받는다.

답변

0

아니요. 원시 소켓은 등록 된 모든 소켓 사용자에게 모든 패킷을 전달하므로 시스템에 들어가 자마자 패킷의 사본을 얻을 수 있지만 UDP 소켓도이를 수신합니다.

두 번째 질문에 ... bind(2) 원시 소켓이 없으므로 포트 번호와 연결할 수 없습니다.

관련 문제