2013-05-23 9 views
1

Windows 용 소켓을 사용하는 앱을 개발했습니다. 그것은 완벽하게 작동하지만 얼마 후에 인터넷 연결이 실패하기 시작하고 마침내이 오류 (10055)가 발생합니다. 이는 내 응용 프로그램이 버퍼 공간을 모두 소비 함을 의미합니다.Windows 소켓 오류 코드 10055

실제로 저는 제가 직접 작성한 코드가 2 개인 소켓을 사용하고 있다고 생각합니다.하지만 타사 라이브러리를 사용하고있어 실제로 어떻게 구현되는지는 알 수 없습니다.

나는이 문제에 관한 많은 문헌을 읽었으므로 나는 그 문제 만이 아니라 그것을 해결하는 방법을 깨닫지 못한다. 실패하면 내 컴퓨터가 인터넷에 연결되지 않습니다. 나는이 오류를 잡아 냄으로써 그것을 시도하고 WSACleanup(), WSAStartup() 일 때도 최선의 방법은 아니지만 ... 그러나 내 응용 프로그램은 여전히이 오류가 누적됩니다.

모든 조언은 대단히 감사하겠습니다.

+1

관련 코드를 게시하십시오. – Rohan

+0

관련 소스 코드를 게시 할 수 있습니까? 어쩌면 메모리 누출 등이있을 수 있습니다. –

답변

2

일반적으로 소켓을 제대로 닫지 않으면 이런 일이 발생합니다. 둘 다 shutdown 당신은 MSDN에서 소켓 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms741394(v=vs.85).aspx) 닫으려는 closesocket이 있는지 확인하십시오 - 당신 전에 bind 소켓을 "Note To assure that all data is sent and received on a connection, an application should call shutdown before calling closesocket"

, 당신은 setsocketopt에 대한 SO_REUSEADDR을 사용할 수있는 것입니다 "Allows the socket to be bound to an address that is already in use"

마지막으로 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms740476(v=vs.85).aspx) 이 블로그를보세요 - http://blogs.technet.com/b/yongrhee/archive/2011/12/19/how-to-troubleshoot-a-handle-leak.aspx

0

응용 프로그램에서 하나 이상의 리소스 누수가 있습니다.

코드가 없으면 일반적인 권장 사항 만 제공 할 수 있습니다.

리소스 누출을 찾으려면 Valgrind 또는 유사한 도구를 실행하는 것이 좋습니다.

다른 방법은 코드를 검토하는 것입니다. 최근에 누수가 시작된 경우 최근 변경 사항을 검토하여 알 수 있습니다.

MSDN에는 article on how to locate memory leaks using Visual Studio이 있습니다. 링크 된 페이지에서 Visual Studio 버전을 선택하십시오.