真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux網(wǎng)絡(luò)編程中tcp粘包及如何解決

本篇文章給大家分享的是有關(guān)linux網(wǎng)絡(luò)編程中tcp粘包及如何解決,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、廣陵網(wǎng)站維護(hù)、網(wǎng)站推廣。

1. 什么是粘包

  • 流式套接字 首先說(shuō)說(shuō)TCP為什么叫流式套接字,顧名思義,是指TCP的數(shù)據(jù)傳輸跟流動(dòng)的水一樣,大家可以想象一下,水是連成一片的,它是沒(méi)有分界線的,而TCP數(shù)據(jù)傳輸也是一樣的,是沒(méi)有界限的;

  • 緩存機(jī)制 熟悉TCP協(xié)議的人都應(yīng)該知道,TCP發(fā)送數(shù)據(jù),并不是應(yīng)用程序send以后就發(fā)出去了,它是先存儲(chǔ)在發(fā)送緩沖區(qū)的,為了性能考慮,可能會(huì)等到多個(gè)數(shù)據(jù)包匯總到一起后,操作系統(tǒng)底層再把緩沖區(qū)整體發(fā)送出去,接收數(shù)據(jù)也是一樣。

  • 最大傳輸單元 在網(wǎng)絡(luò)傳輸中,有個(gè)MTU-最大傳輸單元,是1500個(gè)字節(jié),就是說(shuō)每一次發(fā)送最多只能發(fā)送1500個(gè)字節(jié),如果要發(fā)送超過(guò)這個(gè)長(zhǎng)度的數(shù)據(jù)包,就需要分包發(fā)送。

當(dāng)出現(xiàn)以上三點(diǎn)的情況時(shí),接收端接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù)包大小、次數(shù)可能都不一致,我們沒(méi)辦法確定發(fā)送端發(fā)送過(guò)來(lái)的一個(gè)完整包是怎樣的,就沒(méi)辦法正確獲得我們需要的數(shù)據(jù), 這就是粘包現(xiàn)象。 其實(shí)就是說(shuō),應(yīng)用進(jìn)程并不知道一個(gè)完整的數(shù)據(jù)包到底是多大,沒(méi)法進(jìn)行解析,客戶端和服務(wù)端需要有一個(gè)約定的規(guī)則,來(lái)確保不出現(xiàn)粘包。

2. 怎么解決粘包

有以下三種情況可以解決粘包現(xiàn)象:

  • 一是約定數(shù)據(jù)包長(zhǎng)度,即發(fā)送端和接收端約定一樣的發(fā)送和接收的數(shù)據(jù)包長(zhǎng)度,這樣可以清晰的獲取到我們需要的數(shù)據(jù);

  • 二是使用分隔符,比如smtp協(xié)議就是在發(fā)送時(shí),使用\r\n為分隔符,但如果我們要發(fā)送的數(shù)據(jù)中也有\(zhòng)r\n呢,就容易搞混淆,所以不是特別推薦;

  • 三是在每個(gè)數(shù)據(jù)包的開(kāi)頭利用2個(gè)或者4個(gè)字節(jié)填充整個(gè)數(shù)據(jù)包的長(zhǎng)度,這樣接收端可以先接收2個(gè)或者4個(gè)字節(jié),就可以準(zhǔn)確的知道真正的數(shù)據(jù)包是多長(zhǎng),從而正確獲取需要的數(shù)據(jù);

以上就是linux網(wǎng)絡(luò)編程中tcp粘包及如何解決,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱:linux網(wǎng)絡(luò)編程中tcp粘包及如何解決
URL分享:http://weahome.cn/article/iiocgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部