Winsock.bind 충돌 오류 # 10048 해결을 위한 제안

일부 독자가 현재 알려진 winsock.bind 충돌 오류 번호 10048을 만난 것처럼 보입니다. 이 문제는 다양한 이유로 발생할 수 있습니다. 아래에서 살펴보겠습니다.

[Windows] 이 소프트웨어는 컴퓨터를 수정하고 오류로부터 사용자를 보호합니다.

Winsock 결함 10048은 무엇을 의미합니까? 현재까지 사용 중인 Winsock 오류 10048 주소는 동일한 서버 응용 프로그램이 동일한 컴퓨터에서 동일한 포트를 사용할 수 있도록 성공적으로 시도했음을 의미합니다. 이 오류는 두 명의 SMTP 웹 지원 팀이 커뮤니티 25를 사용하려고 하는 경우에도 동일한 컴퓨터에서 두 명의 SMTP 웹 지원 팀을 실행할 때 발생합니다.

내가 들었던 일반적인 소켓 개발 버그는 실제 1994년(EADDRINUSE) 버그입니다.10048 (WSEAADDRINUSE) bind()를 통해.

기관

귀하의 회사는 C 또는 C++로 서버를 프로그래밍할 수 있습니다. 귀하의 코드 소켓은 아마도다음과 유사한 구성:

// 크로스 플랫폼 오류 코드# 정의된 경우(_WIN32)#define GETSOCKETERRNO() (WSAGetLastError())#다른#define GETSOCKETERRNO()(오류 번호)#끝나면//바인딩할 도시 유형 설정.Addrinfo구조 *주소;getaddrinfo(0, “8080”, &노트, &주소);// 콘센트를 생성합니다.socket_listen;socket_listen 소켓(주소->ai_family, address->ai_socktype, address->ai_protocol 참조);// 소켓을 도시 포트에 바인딩합니다.(bind(socket_listen,주소->ai_addr인 경우 주소->ai_addrlen)) fprintf(stderr, “bind()가 실패했습니다. 오류: %dn”, GETSOCKETERRNO()); 반환 1;

조인 호출이 실패하면 가장 먼저 할 일은 실패 규정을 확인하는 것입니다. V오류는 errno 중에 저장되지만 Linux에서는 Windows에서 조직에서 호출해야 할 수 있습니다.WSAGetLastError().

비용 bind() 오류가 98(Linux)이고 10048(Windows)인 경우중지하려는 도심의 실제 항구가 이전에 사용 중임을 의미합니다.

오류 메시지 받기

특히 text.Linux 양식을 통해 실제 오류 메시지를 받을 수도 있습니다.

의심할 여지 없이 strerror()에 대한 호출에 지나지 않습니다. 이것은 오류 98에서 반환됩니다.이런 종류의 일은 대부분 “이미 소유한 주소” 때문에 발생합니다.

Windows에서 오류 메시지를 복원하는 것은 약간 까다롭습니다. 에 대한 작동 지침이 있습니다.Windows 오류 텍스트가 표시됩니다. 오류Windows의 대답은 특히 “소켓과 관련된 일회성 사용”과 유사할 수 있습니다.주소(프로토콜/주소/포트)는 자주 허용됩니다.”

어쨌든 이제 무엇이 문제인지 확실히 알았으니 어떻게 해결할 수 있습니까?

“주소가 이미 사용 중입니다” 오류의 원인

기본적으로 하나의 프로그램은 주어진 프로세스 col/address/port를 쉽게 수신해야 합니다.편리한 시간에. 둘 이상의 프로그램에 주의를 기울이는 것이 실제로 허용된다면,운영 체제는 새로 도착한 연결을 보낼 프로그램을 알지 못하는 것으로 간주합니다.

이 귀중한 전자 리더기 오류에 대해 들었을 때 일반적으로 세 가지 이유 중 하나로 인해 발생합니다.

특정 한 가지. 다른 프로그램이 이 포트를 사용 중입니다

큰 오류의 가장 명백한 이유는 다른 조치가 포트를 사용하기 때문입니다.당신은 당신이 좋은 경청자가 되기를 원합니다. 이 특정 기능을 사용하면 누구나 프로그램에 대한 모든 포트를 변경할 수 있습니다.듣거나 easy fact 포트를 사용하여 다른 프로그램을 특수화할 수 있습니다.

winsock.bind failed down #10048

리눅스에서는 다양한 다른 프로그램이 누구와 관련하여 듣고 있는지 확인할 수 있습니다.명령 netstat -ntlp. ntlp는 “tcp 수신을 위해 설계된 숫자”를 의미합니다.프로그램”입니다. 즉, 오늘 우리는 netstat에 인터페이스 번호를 표시하도록 요청합니다.(숫자) 수신 시 다시 소켓만 구성하도록 TCP 전기 소켓만 표시소켓을 사용하는 프로그램을 표시하고 상태를 표시합니다.

다음은 검색을 위해 판매되는 Linux netstat를 사용하는 화면 캡처입니다.어떤 프로그램이 8080에서 걸립니다.

위에서 볼 수 있듯이 포트 8080을 바인딩하는 데 도움이 되는 솔루션은 “server1″이며 PID가 포함되어 있습니다.96939. 종종 이 특정 PID를 알고 있으면 원하는 경우 프로그램을 쉽게 종료할 수 있습니다. 오른쪽때때로 보험 계획이 무엇인지, 그리고 매우 잘 알고 있는지 확인하십시오.게임이 필요하든 필요하지 않든 기꺼이 끝내기 전에.

Windows에는 유용한 netstat 명령이 있을 수 있지만 반대로 종종 다르게 사용됩니다. 창문명령 구문 <코드> ​​netstat -nao -p TCP | findstr LISTEN으로 모든 음악 소켓을 나열할 수 있습니다. Windows 요청 netstat은 필터링하는 어려운 방법을 제공하지 않습니다.소켓, 오디오, 절대적으로 findstr 프로그램이 유용할 것입니다. 드디어,목록을 끊기 위해 이 명령을 실행하면 각 TCP 소켓과 소유자가 주의를 기울이고 있음이 표시됩니다.소켓과 함께 작동하는 이 프로그램의 PID입니다.

아래 스크린샷은 Windows에서 일반적인 netstat 시도를 보여줍니다.프로그램은 아마도 연결 8080을 사용할 것입니다:

winsock.bind was failed error #10048

스크린샷에서 볼 수 있듯이 netstat는 각 응용 프로그램의 연락처를 나열하고 다음에서 수신합니다.PID 주소. 새 정보 PID 확인에 대한 정보는 tasklist 명령을 사용하십시오.예: tasklist 실행 | findstr 50396은 도우미의 이름을 알려줍니다.PID 50396의 경우 프로세스는 항구 8080에서 식별됩니다. 예:

스크린샷 오버헤드는 “server1 program.exe”에 일반적으로 50396의 관련 PID가 있음을 보여줍니다.따라서 우리 프로그램은 포트 8080을 사용합니다.

2. 귀하의 프로그램이 실행 중입니다

이것은 당신이 느끼는 것보다 더 일반적일 것입니다. 프로그램이 이미 실행 중입니까? 경우 예,물론 해당 항구는 이미 점령되었습니다!

정량화는 일반적으로 포함하는 것만큼 쉽지 않습니다. 특정 서버에서세상에서 너무 자주 에이전시는 OR 재단에서 악마처럼 행동합니다. V좋은 경우 하나의 bind() 오류가 발생하거나 이미 이전에 사용한 오류를 처리하는 경우 주의하십시오.이전에 좋아하는 프로그램이 실행 중인지 확인합니다.

3. TCP 지연/시간 초과

계속할 수 있도록 최악의 시나리오를 숨겼습니다. 의도한 서버 프로그램와 함께 작동한 다음 종료합니다(또는 확실히 충돌합니다). 다시 시작하면주소 구현(EADDRINUSE 또는 WSAEADDRINUSE)에 대한 새로운 개요를 얻으십시오. 그러나 누군가가 하면몇 분 기다리면 오류 없이 프로그램을 제공할 수 있습니다. 뭐여기에서 무슨 일이 일어나고 있습니까?

나는 통찰력에 들어가지 않을 것입니다(이를 위해 특별 책을 읽으십시오).정확한 소켓이 닫히면 시작된 완료 선택에 대한 TIME-WAIT 상태를 얻을 수 있습니다.회전 목마. 이것은 단순히 사용되는 것이 아니기 때문에 고객 교육을 지원하는 데 실제로 문제가 되지는 않습니다. bind() 는 실제로 일정합니다(보통). 그러나 이 TIME-WAIT 열차는 문제가 될 것입니다.응용 컴퓨터 시스템용. 이것은 운영 체계가 사물을 추적한다는 것을 의미합니다.전체 컴퓨터 소프트웨어가 차단된 후에도 소켓은 확실히 닫힙니다. 충분한사람들이 응용 프로그램을 다시 활성화할 때 “주소가 이미 사용 중입니다” 오류가 발생합니다.

충돌 및 오류로 고통받지 마십시오. Reimage로 수정하세요.

컴퓨터가 제대로 작동합니까? 죽음의 무서운 블루 스크린을 받고 있습니까? 진정하세요, 해결책이 있습니다. Reimage을 다운로드하고 당사 소프트웨어가 모든 Windows 관련 문제를 처리하도록 하십시오. 일반적인 오류를 감지 및 수정하고 데이터 손실 및 하드웨어 오류로부터 사용자를 보호하며 최대 성능을 위해 PC를 최적화합니다. 컴퓨터를 새 것처럼 다시 실행하는 것이 얼마나 쉬운지 당신은 믿을 수 없을 것입니다. 그러니 더 이상 기다리지 말고 지금 Reimage을 다운로드하세요!

  • 1단계: Reimage 다운로드 및 설치
  • 2단계: 애플리케이션을 실행하고 "복원" 버튼을 클릭합니다.
  • 3단계: 복원할 파일 또는 폴더를 선택하고 "복원" 버튼을 클릭합니다.

  • 이제 이 오류를 피할 수 있는 쉬운 방법이 있습니다. SO_REUSEADDR 을(를) 연습할 수 있습니다. bind() 호출보다 소켓 기본 설정. 다음과 같이 들립니다.

    정수 yes는 1을 의미합니다.if(setsockopt(소켓, SOL_SOCKET, SO_REUSEADDR, (비어 있음 *) & 예, sizeof (예)) <0) fprintf(stderr, "setsockopt()가 실패했습니다. 오류: GETSOCKETERRNO());

    이 옵션은 % r n “여러 개의 TIME-WAIT 연결이 허용되더라도 reduce () 가 성공하도록 합니다.아직 거기. 또한 특별한 So를 구현하는 데에는 일반적으로 단점이 거의 없습니다.so_reuseaddr, 대부분의 서버 기능에 활용하는 것이 좋습니다.

    사이트를 통해 자세한 내용은 내 책과 관련된 13장을 확인하십시오.

    이력서

    자신의 bind() 오류로 인해 96(EADDRINUSE) 또는 10048(WSEAADDRINUSE)이 발생하는 경우 이 방법은일반적으로 이미 사용 중인 다른 로컬 포트에 연결하려고 합니다. 일반적으로 통과다음 세 가지 이유 중 한 가지 증가 원인:

    <올>

  • 다른 프로그램이 이 포트를 사용하는 두 번째 프로그램입니다.
  • 그래서 프로그램이 실제로 실행 중이고 두 번째로 실행하려고 했습니다.
  • 귀하의 프로그램은 최근에 시작되었으며 일부 연결은 이미 일반적으로 여전히 양호한 반불량 TIME-WAIT 상태로 고정되어 있습니다.
  • 이유 1은 사용자가 선호하는 포트와 프로그램이 다른 포트를 사용하고 있을 때 프로그램이 계속 닫히는 것일 수 있습니다.

    원인 2는 적시에 프로그램을 한 번만 실행하면 발생할 수 있습니다.

    원인 3은 선택 분 동안 주 콘센트 미터 SO_REUSEADDR를 설정하면 제거될 수 있습니다.

    <시간>

    이 글이 도움이 되셨기를 바랍니다. 귀하의 의견을 대부분 인정하고 싶습니다. 그들이 저희에게 연락할 수 있도록 언제든지 허용하십시오.

    내 네트워킹 시스템 프로그래밍에 대한 나머지 기사는 여기에서 검색할 수 있습니다.

    [PC유저] 당황하지 마세요! Reimage은 모든 Windows 컴퓨터 오류를 수정하는 데 도움이 될 수 있습니다.

    Suggestions To Fix Winsock.bind Crash Error # 10048
    Suggestions Pour Corriger L’erreur De Plantage Winsock.bind # 10048
    Förslag För Att Fixa Kraschfel I Winsock.bind # 10048
    Sugestie Naprawienia Błędu Awarii Winsock.bind # 10048
    Sugerencias Para Reparar El Error De Bloqueo Winsock.bind # 10048
    Sugestões Para Corrigir O Erro De Falha Do Winsock.bind # 10048
    Suggerimenti Per Correggere L’errore Di Crash Di Winsock.bind # 10048
    Suggesties Om Winsock.bind Crashfout # 10048 Op Te Lossen
    Vorschläge Zur Behebung Des Winsock.bind-Absturzfehlers Nr. 10048
    Предложения по исправлению ошибки сбоя Winsock.bind # 10048