IT정보공유/C#

c# 클라이언트 소켓 접속 에러코드

알지오™ 2023. 12. 3.

클라이언트 소켓에서 에러가 발생할 경우 윈도우 소켓 에러코드를 참조하여 어떤 원인인지 알아낼 수 있습니다. 클라이언트의 소켓 에러 코드만 따로 정리를 해보았습니다.

 

에러코드
코드명
설명
10014
WSAEFAULT
잘못된 주소입니다. 시스템에서 호출의 포인터 인수를 사용하려고 할 때 잘못된 포인터 주소를 검색했습니다. 이 오류는 애플리케이션이 잘못된 포인터 값을 전달하거나 버퍼 길이가 너무 작은 경우에 발생합니다. instance 경우 sockaddr 구조체인 인수의 길이가 sizeof(sockaddr)보다 작습니다.

접속하려는 주소 자체가 잘못된 경우 발생할 수 있는 오류입니다.
10048
WSAEADDRINUSE
이미 사용 중인 주소입니다. 일반적으로 각 소켓 주소(프로토콜/IP 주소/포트)의 사용은 하나만 허용됩니다. 이 오류는 애플리케이션이 기존 소켓에 이미 사용된 IP 주소/포트 또는 제대로 닫히지 않은 소켓 또는 아직 닫고 있는 소켓에 소켓을 바인딩 하려고 시도하는 경우에 발생합니다. 여러 소켓을 동일한 포트 번호에 바인딩 해야 하는 서버 애플리케이션의 경우 setsockopt (SO_REUSEADDR)를 사용하는 것이 좋습니다. 클라이언트 애플리케이션은 일반적으로 바인딩 을 전혀 호출할 필요가 없습니다. 연결 은 사용하지 않는 포트를 자동으로 선택합니다. 와일드카드 주소(ADDR_ANY 포함)를 사용하여 바인딩 을 호출하면 특정 주소가 커밋될 때까지 WSAEADDRINUSE 오류가 지연될 수 있습니다. 나중에 연결 수신 대기 WSAConnect 또는 WSAJoinLeaf를 비롯한 다른 함수를 호출할 때 발생할 수 있습니다.

클라이언트 소켓은 보통 포틀르 지정하지 않고, 사용하지 않는 포트로 랜덤하게 지정이 되는데, 이미 사용하고 있는 포트를 지정할 경우에 발생할 수 있습니다.
10051
WSAENETUNREACH
네트워크에 연결할 수 없습니다. 연결할 수 없는 네트워크에서 소켓 작업을 시도했습니다. 이는 일반적으로 로컬 소프트웨어가 원격 호스트에 연결할 경로를 알 수 없음을 의미합니다.

클라이언트 소켓이 서버 소켓으로 접속을 할 수 없을 때 발생합니다. 서버 주소로 ping 또는 telnet 접속을 시도해 보면 네트워크 연결 문제인지 확인할 수 있습니다. 네트워크 연결이 정상적인 경우 telnet 으로 서버 주소로 접속이 되야합니다.
10053
WSAECONNABORTED
소프트웨어로 인해 연결이 중단되었습니다. 데이터 전송 시간 제한 또는 프로토콜 오류로 인해 호스트 컴퓨터의 소프트웨어에 의해 설정된 연결이 중단되었습니다.

클라이언트 소켓이 서버와 정상적으로 연결이 되었으나, 서버단에서 연결된 소켓을 끊을 경우 발생 할 수 있습니다.
10060
WSAETIMEDOUT
연결 시간이 초과되었습니다. 연결된 당사자가 일정 기간 후에 제대로 응답하지 않았거나 연결된 호스트가 응답하지 않아 설정된 연결이 실패했기 때문에 연결 시도가 실패했습니다.

클라이언트 소켓이 서버에 물리적으로 연결되지 않아서 접속할 수 없는 경우에 발생할 수 있습니다.
10061
WSAECONNREFUSED
연결이 거부되었습니다. 대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다. 이는 일반적으로 서버 애플리케이션이 실행되지 않는 외부 호스트에서 비활성 상태인 서비스에 연결하려고 시도하기 때문에 발생합니다.

클라이언트 소켓이 서버에 접속되지 않도록 서버쪽에서 클라이언트 접속을 끊어버리는 상태입니다.

 

 

 

댓글

💲 추천 글