import socket
import threading
def handle_client_request(new_client,ip_port):
print("客户端的ip和端口号分别为:",ip_port)
while True:
recv_data = new_client.recv(1024)
if recv_data:
print("接受的数据长度是:",len(recv_data))
recv_content = recv_data.decode("gbk")
print("接受客户端的数据为:",recv_content,ip_port)
send_content = "客户端你发送的数据我已经收到了,正在处理。。。"
send_data = send_content.encode("gbk")
new_client.send(send_data)
else:
print("客户端已经下线。",ip_port)
break
new_client.close()
if __name__ == '__main__':
tcp_sever_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_sever_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
tcp_sever_socket.bind(("",9090))
tcp_sever_socket.listen(128)
while True:
new_client,ip_port = tcp_sever_socket.accept()
tcp_thread = threading.Thread(target=handle_client_request,args=(new_client,ip_port))
tcp_thread.setDaemon(True)
tcp_thread.start()
```
多任务服务端的实现,可以实现比如多个用户同时或者任意时刻向服务端发送请求,服务端可以处理不同用户的请求,而不是单任务的处理。
实现多任务的处理,在多任务我们自然而然想多了多进程和多线程,但是由于线程更加节省系统资源,所以选择用线程进行多任务的实现更加合理。
理解本篇文章可以搭配上一篇单任务服务端的实现做对比,自己亲自敲一遍效果会更好。
注释也写的比较清晰吧,写的不对的地方欢迎各位大佬指出,互相学习,共同进步~嘿嘿