一  tcp网络编程

 1 server 端
 2 
 3 import socket
 4 sk=socket.socket()  #实例化一个对象
 5 sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)#端口可以重用
 6 sk.bind(('127.0.0.1',9100))
 7 sk.listen()#监听
 8 while True:
 9     conn,addr=sk.accept() #阻塞,三次握手完毕
10     while True:
11         inp=input('请输入你要发送的消息:')
12         conn.send(inp.encode('utf-8'))
13         if inp == 'q': break
14         ret=conn.recv(1024).decode('utf-8')
15         if ret == 'q': break
16         print(ret)
17 
18     conn.close()
19 sk.close()
  client端
1
import socket 2 sk=socket.socket() 3 #while True: 4 sk.connect(('127.0.0.1',9100)) 5 while True: 6 ret=(sk.recv(1024).decode('utf-8')) 7 if ret == 'q': break 8 print(ret) 9 inp=input('请输入你要发送的消息:') 10 sk.send(inp.encode('utf-8')) 11 if inp == 'q': break 12 13 sk.close()

二 tcp粘包

1  发送方的缓存机制

发送数据时间间隔很短,数据了很小,会合到一起,产生粘包

 1 服务端
 2 #_*_coding:utf-8_*_
 3 from socket import *
 4 ip_port=('127.0.0.1',8080)
 5 
 6 tcp_socket_server=socket(AF_INET,SOCK_STREAM)
 7 tcp_socket_server.bind(ip_port)
 8 tcp_socket_server.listen(5)
 9 
10 
11 conn,addr=tcp_socket_server.accept()
12 
13 
14 data1=conn.recv(10)
15 data2=conn.recv(10)
16 
17 print('----->',data1.decode('utf-8'))
18 print('----->',data2.decode('utf-8'))
19 
20 conn.close()
21 
22 服务端
服务端

相关文章: