這篇文章將為大家詳細(xì)講解有關(guān)python中出現(xiàn)黏包如何利用struct模塊解決,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
為什么會(huì)出現(xiàn)黏包現(xiàn)象:
首先只有在TCP協(xié)議中才會(huì)出現(xiàn)黏包現(xiàn)象,是因?yàn)門CP協(xié)議是面向流的協(xié)議,在發(fā)送的數(shù)據(jù)傳輸?shù)倪^(guò)程中還有緩存機(jī)制來(lái)避免數(shù)據(jù)丟失,因此,在連續(xù)發(fā)送小數(shù)據(jù)的時(shí)候,以及接收大小不符的時(shí)候容易出現(xiàn)黏包現(xiàn)象。本質(zhì)還是因?yàn)槲覀冊(cè)诮邮諗?shù)據(jù)的時(shí)候不知道發(fā)送的數(shù)據(jù)的長(zhǎng)短。
解決黏包問(wèn)題
在傳輸大量數(shù)據(jù)之前首先告訴接收端要發(fā)送的數(shù)據(jù)大小,如果想更漂亮的解決問(wèn)題,可以通過(guò)struct模塊來(lái)定制協(xié)議。
struct模塊:
功能:可以把一個(gè)類型,如數(shù)字,轉(zhuǎn)成固定長(zhǎng)度的bytes。
import struct ret = struct.pack('i',456872783) #'i'代表int,就是即將要把一共數(shù)字轉(zhuǎn)換成固定長(zhǎng)度(4個(gè)字節(jié))的bystes類型 print(ret) num = struct.unpack('i',ret) #轉(zhuǎn)換回來(lái),返回一個(gè)元組 print(num[0]) #提前元組中的值得到4096
分享名稱:python中出現(xiàn)黏包如何利用struct模塊解決-創(chuàng)新互聯(lián)
本文鏈接:http://www.chinadenli.net/article44/dgidhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作、用戶體驗(yàn)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容