게임 렉 백서 › L8 소켓과 프로토콜
윈도우 UDP 소켓의 WSAECONNRESET 오류 WSAECONNRESET on a Windows UDP socket
원인 ID sk-udp-connreset · 주 담당 게임개발팀·서버 개발
그림과 실험이 있는 원본 카드로 열기 →
윈도우 서버가 이미 떠난 클라이언트에게 UDP를 보내면 “포트 없음”(ICMP) 알림이 돌아옵니다. 그 알림 때문에 다음 수신 호출이 오류로 끝나는데 서버 코드가 이 오류를 소켓 자체의 고장으로 처리하면 그 소켓을 쓰는 모두가 영향을 받습니다.
왜 막 나간 클라이언트의 주소로 계속 UDP를 보내 “포트 없음”(ICMP) 알림이 돌아옴 → 그러면 윈도우가 그다음 수신 호출을 WSAECONNRESET(10054) 오류로 끝내고, 서버 코드가 수신을 멈추거나 소켓을 닫음 → 화면에서는 그 소켓을 쓰던 모든 사람이 한꺼번에 멈춤·접속 끊김
증상 접속 끊김 , 멈춤
요인 손실, 정체
누가 겪나 서버 전체
언제 가끔 무작위로, 접속·점검 직후
담당 주 담당 게임개발팀·서버 개발
게임개발팀 할 일 WSAIoctl로 SIO_UDP_CONNRESET을 꺼서 이 알림을 받지 않기, 수신 오류가 나도 로그만 남기고 수신을 계속하기.
그래프에서는 연결이 한꺼번에 끊김 · 접속 수, 수신 오류 로그
확인할 곳 게임 서버 로그에서 UDP 수신 오류 코드(WSAECONNRESET, 10054)와 수신 루프가 멈추거나 소켓을 닫은 기록을 찾고 서버 쪽 패킷 캡처로 직전에 ICMP Port Unreachable이 도착했는지 봄 이러면 맞음 접속이 한꺼번에 끊기기 직전에 WSAECONNRESET 수신 오류가 기록되고, 그 전에 막 나간 클라이언트 주소에서 ICMP Port Unreachable이 옴 이러면 아님 리눅스 서버이거나 코드가 SIO_UDP_CONNRESET을 끈 경우면 해당 없음 확인 수단 게임 서버·클라이언트의 로그·지표가 필요
출처 Winsock IOCTLs Microsoft SIO_UDP_CONNRESET으로 UDP “포트 없음”(PORT_UNREACHABLE) 알림 보고를 켜고 끔 recvfrom function (winsock.h) Microsoft UDP 소켓의 WSAECONNRESET은 이전 전송이 ICMP Port Unreachable을 받았다는 뜻 Windows Sockets Error Codes Microsoft WSAECONNRESET 오류 번호 10054
함께 보면 좋은 원인
같은 층: L8 소켓과 프로토콜
같은 증상(접속 끊김)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기