网络编程-粘包
粘包問(wèn)題的產(chǎn)生
TCP流式協(xié)議
基于數(shù)據(jù)流的協(xié)議
接收方產(chǎn)生粘包問(wèn)題
1.接收方不清楚數(shù)據(jù)有多長(zhǎng)只接收了數(shù)據(jù)的一部分
2.接收方多讀取了數(shù)據(jù)
發(fā)送方產(chǎn)生的粘包問(wèn)題
操作系統(tǒng)沒(méi)有及時(shí)發(fā)送前一次的數(shù)據(jù),導(dǎo)致兩次數(shù)據(jù)粘在一起
粘包問(wèn)題的根本原因是接收方不清楚數(shù)據(jù)的長(zhǎng)度
TCP nigle 優(yōu)化機(jī)制
如果多次發(fā)送數(shù)據(jù)的數(shù)據(jù)量小并且時(shí)間間隔短,會(huì)把這一堆數(shù)據(jù)集在一起一次性發(fā)送,目的是為了降低網(wǎng)絡(luò)傳輸次數(shù)
?
解決粘包
核心思路是先通知接收方,要發(fā)送的數(shù)據(jù)的長(zhǎng)度,在發(fā)送真實(shí)的數(shù)據(jù)
UDP
基于數(shù)據(jù)報(bào)的傳輸協(xié)議,不會(huì)發(fā)生粘包問(wèn)題
因?yàn)閿?shù)據(jù)是以報(bào)文的形式存在,每次發(fā)送都是以數(shù)據(jù)報(bào)的形式
對(duì)方接收的也是一個(gè)個(gè)數(shù)據(jù)包
?
struct模塊
將一個(gè)數(shù)據(jù)處理成固定長(zhǎng)度的二進(jìn)制
?
轉(zhuǎn)載于:https://www.cnblogs.com/LinChengcheng/p/10458341.html
總結(jié)
- 上一篇: 周庄门票多少钱
- 下一篇: [Linux] 010 权限管理命令 c