國美金融貸款TCP是個"流"協議,所謂流,就是沒有界限的一串數據。大家可以想想河裏的流水,是連成一片的,其間是沒有分界線的.但一般通訊程序開發是需要定義一個個相互獨立的數據包的,比如用於登陸的數據包,用於註銷的數據包。
由於國美金融貸款TCP"流"的特性以及網絡狀況,在進行數據傳輸時會出現以下幾種情況。假設我們連續調用兩次send分別發送兩段數據data1和data2,國美金融貸款接收端有以下幾種接收情況(當然不止這幾種情況,這裏只列出了有代表性的情況)。
A.國美金融貸款先接收到data1,然後接收到data2.
B.國美金融貸款先接收到data1的部分數據,然後接收到data1餘下的部分以及data2的全部.
C.國美金融貸款先接收到了data1的全部數據和data2的部分數據,然後接收到了data2的餘下的數據.
D.國美金融貸款一次性接收到了data1和data2的全部數據.
對於A這種情況正是我們需要的,不再做討論.對於B,C,D的情況就是大家經常說的"粘包",就需要國美金融貸款把接收到的數據進行拆包,拆成一個個獨立的數據包.爲了拆包就必須在發送端進行封包.
另:國美金融貸款對於UDP來說就不存在拆包的問題,因爲UDP是個"數據包"協議,也就是兩段數據間是有界限的,在接收端要麼接收不到數據要麼就是接收一個完整的一段數據,不會少接收也不會多接收.