单线程下TCP循环等待、接收客户端消息

效果:

 1 import socket
 2 
 3 
 4 def main():
 5     while True:
 6         # 创建监听套接字
 7         tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 8 
 9         # 绑定IP和Port
10         tcp_server_socket.bind(('', 7788))
11 
12         # 设置为被动监听
13         tcp_server_socket.listen(128)
14 
15         # 等待客户端连接
16         print("等待客户端连接中......")
17         client_socket, client_adress = tcp_server_socket.accept()
18         print("已连接客户端:%s" % str(client_adress))
19 
20         # 再加一个循环,当客户端发出特殊指令时,再结束该客户端的连接
21         while True:
22             # 接收数据
23             recv_data = client_socket.recv(1024)
24             print(recv_data.decode('gbk'))
25             # 当客户端发送的数据有内容时,回送消息给客户端
26             if recv_data:
27                 client_socket.send('已接收并处理'.encode('gbk'))
28             # 当客户端关闭连接时(回送消息无数据),退出循环并关闭客户端套接字
29             else:
30                 print("%s 客户端终止了连接" % str(client_adress))
31                 break
32 
33         # 关闭套接字
34         client_socket.close()
35     tcp_server_socket.close()
36 
37 
38 if __name__ == '__main__':
39     main()

 

posted @ 2020-04-07 11:48  组装梦想  阅读(509)  评论(0编辑  收藏  举报