简答面向数据报,面向字节流
生活随笔
收集整理的這篇文章主要介紹了
简答面向数据报,面向字节流
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
先來一個例子
用UDP傳輸100個字節(jié)的數(shù)據(jù):
面向數(shù)據(jù)報
如果發(fā)送端調(diào)用一次sendto, 發(fā)送100個字節(jié), 那么接收端也必須調(diào)用對應(yīng)的一次recvfrom, 接收100個字節(jié);
而不能循環(huán)調(diào)用10次recvfrom, 每次接收10個字節(jié);
面向字節(jié)流
由于緩沖區(qū)的存在, TCP程序的讀和寫不需要一一匹配, 例如:
寫100個字節(jié)數(shù)據(jù)時, 可以調(diào)用一次write寫100個字節(jié), 也可以調(diào)用100次write, 每次寫?一個字節(jié);
讀100個字節(jié)數(shù)據(jù)時, 也完全不需要考慮寫的時候是怎么寫的, 既可以一次read 100個字節(jié), 也可以一次read一個字節(jié), 重復(fù)100次;
應(yīng)用層交給UDP多長的報文, UDP原樣發(fā)送, 既不會拆分, 也不會合并;
TCP有一個緩沖,當(dāng)應(yīng)用程序傳送的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。如果應(yīng)用程序一次只發(fā)送一個字節(jié),TCP也可以等待積累有足夠多的字節(jié)后再構(gòu)成報文段發(fā)送出去。
總結(jié)
以上是生活随笔為你收集整理的简答面向数据报,面向字节流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。