服务器端程序
import struct import socket sk = socket.socket() sk.bind(('127.0.0.1',9000)) sk.listen() conn,addr = sk.accept() send_msg = input('>>>').encode() bytes_len = struct.pack('i',len(send_msg)) conn.send(bytes_len) conn.send(send_msg) # 粘包现象 conn.send(b'world') conn.close() sk.close() # 1.发送端的粘包 合包机制 + 缓存区 # 2.接收端的粘包 延迟接受 + 缓存区 # 3.流式传输 # 电流 高低电压 # 所以我们说 tcp协议是无边界的流式传输 # 4.拆包机制 # 粘包现象的本质 # 接收端不知道发送端给我发送了多长的数据
客户端程序
import struct import socket sk = socket.socket() sk.connect(('127.0.0.1',9000)) bytes_len = sk.recv(4) msg_len = struct.unpack('i',bytes_len)[0] msg = sk.recv(msg_len) print(msg.decode()) msg2 = sk.recv(5) print(msg2) sk.close()