ping 소스에서..
글쓴이: psjcap / 작성시간: 목, 2004/03/04 - 11:17오전
ping 소스를 보니.. icmp 헤더에 id에 자기 자신의 process id를 넣더군요..
그리고 recvfrom 할 때 id가 자기자신거랑 다르면 그냥 버리던데요..
만약 두 프로세스에서 ping을 쏠 경우..
내가 보낸 ping에 reply가 다른 프로세스로 가 버려서..
내가 못 받는 경우가 생길 수 있나요..??
ping 프로그램을 여러개 띄워놓아도 그런 경우는 생기지 않는거 같은데..
그럼 한수 부탁드립니다..
Forums:
로우소켓으로 받거든요, 로우소켓으로 받는다는것은 두 프로세스이상에서 똑같
로우소켓으로 받거든요, 로우소켓으로 받는다는것은 두 프로세스이상에서 똑같이 받아들인다는거에요..
즉.. icmp 패킷을 받아 출력하게 한 간단한 소스로요..
두개를 각각 터미날에 켜두죠..
그리고 핑을 날렸을때..
아래와 같은 결과를 얻게됩니다.
로우소켓이기 때문에, 각각의 프로세스는 동일한
데이타를 받게 되고, 한쪽의 ping 에서..
id 필드와 프로세스 id 가 다르다면, 즉..
자신(핑)이 보낸 패킷이 아니라면, 무시하는겁니다.
무시한다는건 return; 으로 처리했던데요.
즉 더이상 안받는다는 뜻입니다.
그럼 다른 프로세스도 동일한 데이타를 받을테고..
한쪽에서만 받는다는.. 1:1 연결과는 다르죠..
그래서 드랍되는게 아니라.. 동시에 둘다 받는겁니다..
:=)
힘내세요.
댓글 달기