一 * TCP 粘包
1.从客户端发送信息到服务端时两端都有缓冲区发送信息时会发送到另一端,缓冲区会有大小限制数据不会丢失数据流是不间断的,数据不能为空

2.粘包发生的原因:
1.存在缓冲区发送端数据大缓冲区满数据被拆包了,导致本次数据不完整
2.数据小发送频繁发生了合包封包的现象,几条数据和成了一条
tu_server.py

tu_client.py

二 * UDP上传下载
1.UDP上传逻辑
上传下载知识点: 操作文件 json模块
上传下载的步骤分析
选择功能
上传功能 输入文件路径
操作文件打开文件名称文件内容
读取文件将文件内容传给服务端
send 通过json模块进行传输
#通过文件路径得到文件名称
name=os.path.basename("E:\py网络编程\\cons_pro完善.py")
print(name)
2.服务端客户端上传文件代码
tu_server.py

tu_client.py
import os
import json
#上传下载文件
sk=socket.socket()
sk.connect(("127.0.0.1",9090))
dict={"1":"upload","2":"download"}
while True:
#展示功能
for k,vin dict.items():
print(k,v)
#选择输入功能
num=input("请输入功能>>>")
#上传功能选择文件路径
if num=="1":
f_path=input("请输入文件路径>>>")
#获得文件名称
f_name=os.path.basename(f_path)
#打开文件获得文件内容
with open(f_path,"r",encoding="utf-8")as f:
content=f.read()
#告诉系统上传的所有内容
dicts={"function":dict.get(num),"filename":f_name,"content":content}
#将字典进行序列化变为字符串
str_dicts=json.dumps(dicts)
#发送给套接字字符串内容
sk.send(str_dicts.encode("utf-8"))
break
#关闭套接字
sk.close()
3.解决粘包问题

网友评论