日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python如何解決黏包問題

1、了解發(fā)送數(shù)據(jù)的大小,設(shè)置接收的大小,這樣就可以正好接收所有的數(shù)據(jù)。黏包問題是由于tcp的優(yōu)化算法將兩個不太大的數(shù)據(jù)包組合在一起發(fā)送的。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比遵義網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式遵義網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋遵義地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

這種情況通常發(fā)生在連續(xù)使用幾個send()時。

這是遠程執(zhí)行cmd命令并返回結(jié)果的程序
server端代碼
import struct
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
conn,addr = sk.accept()
while True:
    cmd = input('>>>')
    conn.send(bytes(cmd,encoding='utf-8'))
    num = conn.recv(1024).decode('utf-8')   #接收client端計算好的數(shù)據(jù)長度
    conn.send(bytes('ok',encoding='utf-8'))
    #發(fā)送一個確認防止發(fā)送num的時候跟后面的send內(nèi)容合并了
    ret = conn.recv(num)
    print(ret.decode('gbk'))
conn.close()
sk.close()

2、使用struct模塊解決粘合現(xiàn)象。

server端代碼
 
#tcp黏包現(xiàn)象的解決 struct
import struct
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
conn,addr = sk.accept()
while True:
    cmd = input('>>>')
    conn.send(bytes(cmd,encoding='utf-8'))
    # num = conn.recv(1024).decode('utf-8')
    num = conn.recv(1024)   #接收數(shù)據(jù)
    num = struct.unpack('i',num)[0]#進行解包,解包的結(jié)果是一個元組類型取第一個數(shù)據(jù)
    # conn.send(bytes('ok',encoding='utf-8'))
    ret = conn.recv(num)
    print(ret.decode('gbk'))
conn.close()
sk.close()

以上就是python解決黏包問題的方法,希望對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)Python教程

本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。


分享名稱:創(chuàng)新互聯(lián)Python教程:python如何解決黏包問題
本文地址:http://m.5511xx.com/article/cdedjoc.html