TCP服务端-线程版

利用线程实现,一个服务端可以同时服务多个客户端。

TCP服务端-线程版代码实现:

 1 import socket
 2 import threading
 3 
 4 
 5 def handle_client_socket(new_socket, ip_port):
 6     print("建立连接成功:", ip_port)
 7     while True:
 8         # 8.使用新的套接字发送数据
 9         send_data = "你好,我是服务端。"
10         send_data_encode = send_data.encode("gbk")
11         new_socket.send(send_data_encode)
12         # 7.使用新的套接字接收数据,并设置最大数据接收长度为1024
13         recv_data = new_socket.recv(1024)
14         if recv_data:
15             recv_data_decode = recv_data.decode("gbk")
16             print("服务端接收的数据为:", recv_data_decode)
17         else:
18             print("客户端下线了", ip_port)
19             break
20     # 9.关闭套接字
21     # 与客户端断开通信
22     new_socket.close()
23 
24 
25 # 1.导入模块
26 if __name__ == '__main__':
27     # 2.创建套接字对象
28     tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
29 
30     # 3.设置端口复用
31     tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
32 
33     # 4.绑定端口
34     tcp_server_socket.bind(("", 9090))
35 
36     # 5.设置监听,并设置最大等待连接数为128
37     tcp_server_socket.listen(128)
38     while True:
39         # 6.等待客户端建立连接,并接收accpet()返回的新的套接字对象,和客户端IP+端口号
40         new_socket, ip_port = tcp_server_socket.accept()
41         socket_thread = threading.Thread(target=handle_client_socket, args=(new_socket, ip_port), daemon=True)
42         socket_thread.start()
43 
44     # 停止服务端服务
45     # tcp_server_socket.close()

猜你喜欢

转载自www.cnblogs.com/chao666/p/12002166.html