python3 tcp的粘包現(xiàn)象和解決辦法解析
這篇文章主要介紹了python3 tcp的粘包現(xiàn)象和解決辦法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
服務(wù)器端
import socket
sk = socket.socket()
sk.bind(("127.0.0.1", 6666))
sk.listen()
conn, address = sk.accept()
def my_send(msg):
bs = msg.encode("utf-8")
len_str = format(len(bs), "04d") # 定長4位
conn.send(len_str.encode("utf-8"))
conn.send(bs)
my_send(input(">>>:").strip())
my_send(input(">>>:").strip())
客戶端
import socket
import time
sk = socket.socket()
sk.connect(("127.0.0.1", 6666))
time.sleep(10) # 制造粘包情況
msg = sk.recv(1024).decode("utf-8") # 粘包現(xiàn)象
print(msg)
執(zhí)行結(jié)果:
0004aaaa0003bbb
有粘包的現(xiàn)象。
解決粘包,客戶端代碼調(diào)整
import socket
import time
sk = socket.socket()
sk.connect(("127.0.0.1", 6666))
time.sleep(10)
def my_recv():
len_str = int(sk.recv(4).decode("utf-8"))
msg = sk.recv(len_str)
print(f"來自服務(wù)端的消息:{msg.decode('utf-8')}")
my_recv()
my_recv()
執(zhí)行結(jié)果:
來自服務(wù)端的消息:aaaa 來自服務(wù)端的消息:bbb
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python如何每天在指定時(shí)間段運(yùn)行程序及關(guān)閉程序
這篇文章主要介紹了python如何每天在指定時(shí)間段運(yùn)行程序及關(guān)閉程序問題,具有很好的參考價(jià)值,希望對大家有所幫助。2023-04-04
python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁面的實(shí)例代碼
這篇文章主要介紹了python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁面的實(shí)例代碼,需要的朋友可以參考下2018-05-05
Pandas對DataFrame單列/多列進(jìn)行運(yùn)算(map, apply, transform, agg)
這篇文章主要介紹了Pandas對DataFrame單列/多列進(jìn)行運(yùn)算(map, apply, transform, agg),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Django 忘記管理員或忘記管理員密碼 重設(shè)登錄密碼的方法
今天小編就為大家分享一篇Django 忘記管理員或忘記管理員密碼 重設(shè)登錄密碼的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
django rest framework serializer返回時(shí)間自動格式化方法
這篇文章主要介紹了django rest framework serializer返回時(shí)間自動格式化方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

