인터넷에서 TCP 프로토콜을 학습하고 실험을 시작합니다. http://www.diffen.com/difference/TCP_vs_UDPTCP 소켓 질문
"에서 기사를 읽은 후"손실 된 부품의 경우 메시지 확인 및 재전송을 관리하므로 TCP가 더 신뢰할 수 있습니다. 따라서 누락 된 데이터가 전혀 없습니다. " 나는 "TCP는 신뢰성"과 "재전송 부품을 잃었다"때문에 그것이 좋은 생각
while(! EOF (file))
{
data = read_from(file, 5KB); //read 5KB from file
write(data, socket); //write data to socket to send
}
...하지만 그렇지 않다 :
는 그럼 난, 난 TCP 소켓 코드 블록을 내 실험을 쓰는가 잘 했어. 작은 파일은 OK이지만은 2MB의에 올 때, 가끔은 괜찮아요 항상은 아니지만 ...
이제, 나는 또 다른 하나를 시도 :
while(! EOF (file))
{
wait_for_ACK();//or sleep 5 seconds
data = read_from(file, 5KB); //read 5KB from file
write(data, socket); //write data to socket to send
}
그것은이다 ... 지금은 좋은
내가 생각할 수있는 것은 첫째 이유는 다음과 같습니다 : 1. 전송 속도가 프로그램의 쓰기 속도보다 느리기 때문에 송신자의 버퍼 오버 플로우가 발생합니다 (전송 속도는 TCP로 제어 됨) 2. 아마도 전송 속도 쓰기 속도보다 큽니다.하지만 일부 패킷은 손실됩니다 (일부 재전송 후에도 여전히 실패하고 TCP가 포기합니다 ...)
아이디어가 있으십니까? 감사합니다. .
흠,이 코드는 어떤 OS 및 프로그래밍 언어입니까? – thkala
@thkala +1, 저 "5KB"는 정말로 나를 음미합니다. – Mauricio
Linux의 경우 C ... 5KB가 그 예입니다. 5KB 대신, 파일에서 1KB를 읽을 수있을 때마다, 다음에 1KB를 보내십시오. – user397232