윈도우 프로그래밍

UDP, recvfrom()에서 WSAECONNRESET(10054) 에러 날 때...

하늘흐늘 2009. 4. 30. 19:09
반응형

recvfrom(...)에서 WSAECONNRESET(10054)에러가 나오면, 열라 황당하죠...

 왜냐하면 10054의 의미는 ICMP Port Unreachable이라는 것인데, recvfrom은 내 소켓에서 데이터를 받는 것이니 왠? Unreachable? UDP에서 WSAECONNREST?   
 WSAECONNRESET은 해당코드가 TCP에서의 에러일 떄의 의미를 이야기 하는 것이고 UDP소켓에서의 이유는 아래와 같이 MSDN에서 나와 있습니다.
" On a UDP-datagram socket this error indicates a previous send operation resulted in an ICMP Port Unreachable message. "
 뭐, 간단히 해석하자면 "먼저번 Send(...)에서 보낸 패킷에 대해서 ICMP Port Unreachable Message라는 IP레벨의 ICMP 메시지 받았어"라는 뜻이죠. 

 ICMP 메세지는 해당 호스트(the host)나 내부 게이트웨이에 의하여 보낼 수 없는 이유를 알려주기 위하여 만들어지며, 상세 이유는 해당 ICMP 메시지를 확인해 봐야 합니다. 이 메시지에 대하여 좀 더 자세히 알아보려면, 혹은 가능한 에러 이유에 대하여 보려면 위키미디어 형의 ICMP Destination Unreachable을 참조하시면 됩니다.

흠흠.. 오늘도 즐프~

반응형