몇 가지 테스트/프로파일 링 목적으로 IOCP를 사용하여 간단한 더미 서버/더미 클라이언트 프로그램을 만들었습니다. (또한 비동기 네트워크 프로그래밍에 익숙하지 않음을 알고 싶습니다.)ConnectEx with IOCP 문제
더미 클라이언트가 ConnectEx 함수를 사용하여 서버에 연결하려고하면 서버가 원본 클라이언트와 잘 작동하는 것처럼 보이지만 IOCP 작업자 스레드 GetQueuedCompletionStatus 함수에 의해 여전히 차단되고 서버가 연결을 수락하는 동안 결과를 반환하지 않습니다.
이 문제를 해결하기 위해 문제 및/또는 이유는 무엇이며 어떻게해야합니까?
더 많은 코드를 표시하십시오. 어쨌든, 서버를 telnet 할 때 무엇을합니까? (telnet localhost, 간단한 tcp 클라이언트로 매우 유용합니다). –
실제 코드는 회사의 자체 라이브러리를 기반으로하므로 유감스럽게 생각 합니다만 클라이언트의 스켈레톤은 다음과 같이 설명 할 수 있습니다. WSAstartup -> IOCP 생성 -> 작업 스레드 시작 -> IOCtl을 사용하여 ConnectEx 가져 오기 -> 바인드 소켓 -> ConnectEx 전화 -> 소켓을 IOCP에 할당하십시오. 소켓이 이미 연결되어 있습니다. 반복적으로 서버에 연결하려고하면 WSAGetLastError 오류가 발생합니다. 내 서버 tommorow 텔넷 시도해 보겠습니다. 고맙습니다! – summerlight
ConnectEx가 새로운 스레드에서 연결 목적으로 만 호출 될 때 제대로 작동하는 것 같습니다. 그래도 여전히이 문제의 정확한 이유는 모르겠습니다. – summerlight