一. 任务需求
- 编写一个TCP服务端程序,循环等待接受客户端的连接请求
- 当客户端和服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线程阻塞
- 把创建的子线程设置成为守护主线程,防止主线程无法退出
二. 示例代码
import socket
import threading
def handle_client_request(service_client_socket, ip_port):
while True:
recv_data = service_client_socket.recv(1024)
if recv_data:
print(recv_data.decode("gbk"), ip_port)
service_client_socket.send("收到请求,正在处理...".encode("gbk"))
else:
print("客户端下线了:", ip_port)
break
service_client_socket.close()
if __name__ == '__main__':
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
tcp_server_socket.bind(("", 8080))
tcp_server_socket.listen(128)
while True:
service_client_socket, ip_port = tcp_server_socket.accept()
print("客户端连接成功:", ip_port)
sub_thread = threading.Thread(target=handle_client_request, args=(service_client_socket, ip_port))
sub_thread.setDaemon(True)
sub_thread.start()