- 完成「送一次,收多次」的實驗
(藉由限制server一次只能接收6byte)
由此可知傳送接收都是透過buffer
- 完成「送多次,收一次」的實驗
(一次送出5個封包,server端先暫緩1秒鐘(讓封包都到齊ㄌ在接收))
雖然client送出了五個封包,但server還是能一次完全接收。
文字檔的完整性很重要,適合用TCP
只傳字元部分,結尾\0不傳。
strlen(str),不加一。
接收若要印出,自行尾部加\0。
client只讀一次,送一次、server只收一次,。
0d0a:在Windows上的換行符號,0a:在UNIX上的換行符號。
不同的系統對換行的的解釋不太一樣。
可處理較大文字檔。
client邊讀邊送、server邊收邊存。
當client send()兩次,server不一定也會成功recv()兩次,可能會有boundary problem。
server不需要連線也不需要accept,所以sd只需一個。
不會關閉連線,不知道甚麼時候會結束。因此才需要改良
多設了counter計算傳送次數、sum計算封包數量。
- 不知道傳送結束->用暗號告知
send(sd,"END",4,0);//client傳送END回去給server去比較封包是否傳完
- 不知道有無遺失->傳送完畢,附上送出總量
n = recv(sd, buf, MAXSIZE, 0);
if(sum != atoi(buf)){printf("OH...Pkt Number mismatched!!\n");}
else{printf("Correct,Pkt Number matched!!\n");}
//比較server接師的封包數量和client傳送的封包樹是否相同
這次的作業是傳送接收檔案作業,做完全部8個練習,確實也挺花時間的,但至少有懂程式在寫甚麼,收穫很多!