粘包
粘包主要是因?yàn)榻邮辗讲恢酪淮涡蕴崛《嗌僮止?jié)的數(shù)據(jù)所造成的
解決粘包的方案:自定義報(bào)頭
第一種方法:發(fā)送方先用報(bào)頭傳輸數(shù)據(jù)的長(zhǎng)度再發(fā)送數(shù)據(jù),接受方先接受數(shù)據(jù)的長(zhǎng)度信息再根據(jù)長(zhǎng)度信息來(lái)獲取知道獲取的長(zhǎng)度等于總長(zhǎng)度
第二種方法:自定義復(fù)雜報(bào)頭? 完成發(fā)送一些額外的信息。先將要發(fā)送的額外數(shù)據(jù)打包成一個(gè)字典,將字典轉(zhuǎn)為bytes類型,計(jì)算字典的bytes長(zhǎng)度并發(fā)送,再發(fā)送字典數(shù)據(jù),最后發(fā)送真實(shí)數(shù)據(jù)
#先把需要的信息打包成一個(gè)字典 dic = {'name':'博客園','md5':'3714718355''len':1035} #字典轉(zhuǎn)字符串 head_dic = str(dict) bytes = head_dic.encode('utf-8') #先發(fā)送這個(gè)字典字符串的長(zhǎng)度 dic_len = len(head_dic) #將長(zhǎng)度轉(zhuǎn)化為字節(jié) bytes_len = struct.pack('i',dic_len) #發(fā)送報(bào)頭的長(zhǎng)度 c.send(bytes_len) #發(fā)送真實(shí)數(shù)據(jù) c.send(bytes) 注意:TCP只能傳字節(jié) 示例?
轉(zhuǎn)載于:https://www.cnblogs.com/xiamenghan/p/9918041.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: [ NOI 2002 ] Robot
- 下一篇: linux 安装tar 命令