2016-10-28 6 views
0

패킷을 보내고 재전송을 시작하면 송신 기능이 작동하지 않습니까? 내 경우에는 응용 프로그램이 잠김 상태가되어 보내기 위해 보내기를 기다린 다음 잠금을 해제합니다.TCP는 함수 재전송 로직을 보냅니 까?

하지만 내 시나리오에서는 결코 돌아 오지 않았습니다. 나는 우리가 재전송 사례를 가지고있을 때 우리가 정말로 기능을 전송하지 못하는지 알고 싶다.

답변

2

send 함수는 소켓 송신 버퍼에 데이터를 전송하여 충분한 공간이없는 동안 차단합니다.

수신 확인시 소켓 송신 버퍼에서 데이터가 제거됩니다.

재전송은 피어에 전송 된 데이터가 적절한 시간 초과 간격 내에 수신 확인되지 않은 경우 시작됩니다.

재전송과 send() 기능 간의 상호 작용은 기본적으로 다음과 같이 구성됩니다. 데이터가 확인되지 않은 경우 데이터는 여전히 전송 버퍼에 있으므로 send() 기능이 차단 될 수 있습니다.