socket建立tcp、udp链接

建立不中断tcp链接:

tcp服务端:

 1 from socket import *
 2 
 3 ip_port = ('192.168.0.101', 8000)
 4 buffer_size = 1024
 5 back_log = 5
 6 
 7 s_server = socket(AF_INET, SOCK_STREAM)  # 启用tcp链接
 8 s_server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)  # 允许重复使用IP地址
 9 s_server.bind(ip_port)  # 服务端绑定ip端口
10 print('服务端已启动,地址为:{},端口为:{}'.format(*ip_port))
11 s_server.listen(back_log)  # 监听客户端数量
12 while True:
13     conn, addr = s_server.accept()  # 等待客户端连接
14     print('客户端已连接:', addr)
15     while True:
16         try:  # 如果客户端主动断开连接,则捕获异常,断开连接
17             data = conn.recv(buffer_size)
18             if not data: continue  # 若客户端发来消息为空,则重新接受——否则会导致tcp处于挂起在接收状态
19             print('客户端发来消息:', data.decode('utf8'))
20             conn.send(data.upper())  # 收到的消息是二进制格式,所以回复的时候不需要处理编码
21         except Exception as e:
22             print(e)
23             break
24     conn.close()

tcp客户端:

 1 from socket import *
 2 
 3 ip_port = ('192.168.0.101', 8000)
 4 buffer_size = 1024
 5 
 6 s = socket(AF_INET, SOCK_STREAM)
 7 s.connect(ip_port)
 8 while True:
 9     data = input('::>').strip()
10     s.send(data.encode('utf8'))
11     msg = s.recv(buffer_size)
12     print('收到来自服务端的消息:', msg)

 

注意:tcp是需要建立双向连接的,所以需要监听客户端的链接,同时根据所建立的链接来收发消息。并且tcp的IP和端口绑定后(形成一个通道),建立连接之后不允许其他链接接入。

 

 

补:TCP与UDP区别详见:https://blog.csdn.net/li_ning_/article/details/52117463

posted @ 2019-10-04 19:13  唐大侠的小迷弟  阅读(696)  评论(0编辑  收藏  举报