메신저는 다중 스레드 된 winsock 응용 프로그램을 작성하고 소켓을 닫는 데 몇 가지 문제가 있습니다. 우선, 동시에 열 수있는 소켓의 수에는 제한이 있습니까? 한 번에 32 개의 소켓처럼 말할 수 있습니다.SO_LINGER 및 닫는 소켓 (WINSOCK)
나는 소켓 중 하나에 연결을 설정하고 정보를 전달하고 모두 올바르게 진행됩니다. 문제는 소켓을 연결 해제 한 다음 동일한 대상에 다시 연결할 때 SYN 이후 서버에서 RST가 발생합니다. 서버 응용 프로그램에 대한 코드가 없어서 디버깅 할 수 없습니다.
SO_LINGER를 사용하고 각 세션이 끝날 때마다 RST 플래그를 보냈습니다. 하지만이 방법으로 내 연결을 종료하고 싶지 않습니다. SO_LINGER을 사용하지 않을 때 FIN 플래그가 전송되었지만 연결이 실제로 닫히지 않은 것으로 보입니다.
어떤 도움이 필요합니까? 감사합니다.
한 가지를 언급하는 것을 잊었습니다. 단일 스레드를 실행할 때이 문제가 발생하지 않습니다. 모두 올바르게 연결됩니다. 동시에 2 개 이상의 스레드 (각각 16 개의 다른 서버로 보내는 16 개의 다른 소켓 열기)를 전송하면 어딘가에 연결이 끊어집니다. –
클라이언트 소켓을 바인딩하고 있습니까? –