tcp协议的多人多次通信
udp协议的多人通信
每句话什么意思?执行到哪程序等待、阻塞、结束阻塞?
粘包现象
什么是粘包
发生在发送端:发送间隔短,数据小,由于优化机制就合并在一起发送了
发送在接收端:接收不及时,所以数据就在接收方的缓存端黏在一起了
粘包发生的本质:tcp协议的传输是流式传输,数据与数据之间没有边界
怎么解决粘包:自定义协议 struct模块
发送端
接收端
tcp文件传输
import socket
import json
#接收
sk=socket.socket() #创建套接字
sk.bind(('127.0.0.1',9000)) #绑定端口
sk.listen()
conn,_=sk.accept()
msg=conn.recv(1024).decode('utf-8')
print(msg)
msg=json.loads(msg)
with open(msg['filename'],'wb')as f:
content=conn.recv(msg['filesize'])
print('---->',len(content))
f.write(content)
conn.close()
sk.close()
import socket
import os
import json
# 发送
sk=socket.socket() #创建套接字
sk.connect(('127.0.0.1',9000))
# 文件名、文件大小
abs_path=r'E:\Py Project\day30\tmp'
filename=os.path.basename(abs_path)
filesize=os.path.getsize(abs_path)
dic={'filename':filename,'filesize':filesize}
str_dic=json.dumps(dic)
sk.send(str_dic.encode('utf-8'))
with open(abs_path,mode='rb') as f:
content=f.read()
sk.send(content)
sk.close()
tcp协议的自定义协议解决粘包问题
验证客户端合法性
并发的tcp协议server端---socketserver
*
手机扫一扫
移动阅读更方便
你可能感兴趣的文章