문제

WinSock 오류 10038로 인해 소켓을 통해 메시지를 보내려는 시도가 실패했습니다.약 40초 후에 동일한 소켓에서 메시지가 성공적으로 수신되고 이어서 send()도 동일한 소켓에서 성공합니다.이 동작은 Windows Server 2003에서 목격되었습니다.WinSock 및 Windows Server 2003에서 알려진 동작이 있습니까?

도움이 되었습니까?

해결책

Winsock 오류 10038은 "소켓이 아닌 항목에서 작업이 시도되었습니다"를 의미합니다.

오류 코드에 대한 정보를 찾는 작은 방법(모든 종류의 Windows 오류 코드에 유용함):

  • 명령 프롬프트 열기
  • "net helpmsg 10038"을 입력하세요.

귀하의 신청서는 어떤 언어로 작성되었습니까?C/C++인 경우 잘못된 소켓 핸들을 사용하고 있는 것일 수 있습니까?

다른 팁

계층화된 Winsock 공급자를 확인하는 아이디어를 주신 a_mole에게 정말 감사드립니다.일부 PC와 TimesTen DB에 문제가 있습니다.ODBC 클라이언트 DSN을 설정하려고 하면 10038 오류가 발생합니다.영향을 받은 PC의 netsh 출력을 조사한 결과 Wave Systems의 Embassy Trust Suite가 설치되어 있는 것으로 나타났습니다.분명히 Dell은 일부 PC에 이 기능을 사전 설치했습니다.어쨌든 이 소프트웨어를 제거하면 문제가 해결되었습니다.

다시 한번 감사드립니다

플랫폼 문제는 아닙니다. 보장할 수 있습니다.대부분의 경우 소켓 핸들에 액세스하는 데 사용하는 변수는 스레드로부터 안전하지 않으며 실제 소켓이 생성되기 전에 send() 호출에서 사용됩니다.

또 다른 가능한 원인은 계층화된 Winsock 공급자가 있다는 것입니다.cmd 프롬프트의 "netsh Winsock show"는 설치된 공급자를 표시하며 Microsoft가 아닌 공급자를 제거해 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top