1. TCP协议下的如何解决粘包问题
TCP(transport control protocol 传输控制协议) 使用Nagle算法,将多次间隔较小且数据量小的数据,合并成大的数据块;接受端无法识别每条数据的边界,因此产生粘包现象。
""" Server """ from socket import * back_log = 5 bufsize = 1024 ip_port = ('127.0.0.1', 8080) tcp_server = socket(AF_INET, SOCK_STREAM) tcp_server.bind(ip_port) tcp_server.listen(back_log) while True: print('服务端开始处理连接。。。') conn, addr = tcp_server.accept() print('客户端连接', conn) print('客户端地址', addr) while True: try: data = conn.recv(bufsize) if not data: break print('接收到的数据', data) conn.send(data.upper()) except Exception as e: print(e) break
""" Client """ from socket import * bufsize = 1024 ip_port = ('127.0.0.1', 8080) tcp_client = socket(AF_INET, SOCK_STREAM) tcp_client.connect(ip_port) tcp_client.send('hello'.encode('utf-8')) tcp_client.send('world'.encode('utf-8')) response = tcp_client.recv(bufsize) print('response is ==> ', response) # response is ==> b'HELLOWORLD'
解决思路:告知服务端发送数据长度
2. TCP协议如何实现多个客户端连接(并发处理)
3. UDP协议实现QQ聊天