connect()가 여러 번 성공한 후 connect()가 3초 동안 차단되었습니다.

connect()가 여러 번 성공한 후 connect()가 3초 동안 차단되었습니다.

connect()서버에 연결하고 for 루프에서 서버를 닫는 클라이언트 애플리케이션을 작성 중입니다 .

이는 차단 모드에서 수행되며 일부 호출은 수천 번의 성공 후 약 3초 동안 차단되는 connect()것으로 나타났습니다 . tcpdump를 사용했는데 몇 가지 이상한 결과를 발견했습니다. 호출 후 약 3초 동안 SYN이 전송되지 않았습니다.connect()connect()connect()

무슨 일이에요?

추신. 저는 64비트 Ubuntu, 커널 3.0.0-13을 사용하고 있습니다.

답변1

bind아마도 전화하기 전에 전화를 하지 않았을 가능성이 높습니다 connect(이는 정상적인 현상이며 이렇게 해야 할 이유가 없습니다). 따라서 이전에는 connect암시적인 bind. 로컬 포트의 사용 가능한 범위가 소진된 경우 bind해당 포트를 기다리는 동안 차단이 발생할 수 있습니다. 가장 좋은 솔루션은 수행하려는 작업에 따라 다릅니다. 자세한 내용은 내 의견을 참조하세요. 해결 방법을 제안해 드릴 수 있습니다.

관련 정보