python网络编程TCP服务多客户端的服务端开发

#服务多客户端TCP服务端开发                                   2 #方法说明
  3 """
  4 bind(host,port)表示绑定端口号,host是ip地址,ip地址一般不进
    行绑定,表示本机的任何一个ip地址都行,port是端口号
  5 listen(backlog)表示设置监听,backlog参数表示最大等待连接的>    个数
  6 accept()表示等待接受客户端的连接请求
  7 """
  8 import socket
  9 import threading
 10 #处理客户端请求
 11 def client_socket(ip_port,new_client):#子线程来完成
 12     print("客户端的ip和端口号为:",ip_port)
 13     while True:
 14         data = new_client.recv(1024)
 15         if data:
 16             #接受客户端的收据
 17             #对二进制数据进行解码
 18             recv_data = data.decode("utf-8")
 19             print("接收客户端的数据为:",recv_data)
 20             #发送数据到客户端
 21             client_data = "最伟大"
 22             send_data = client_data.encode("utf-8")
 23             new_client.send(send_data)
 24         else:
 25             print("客户端下线了:",ip_port)
 26             break
 27     #关闭服务与客户端套接字,表示终止服务端与客户端通信
 28     new_client.close()
 29 
 30 if __name__ == "__main__":
 31     #创建服务端套接字对象
 tcp_server_socket = socket.socket(socket.AF_INET,socket    .SOCK_STREAM)
 33     #绑定端口号
 34     #ip地址一般不写死,只要是本机电脑的任何一个ip地址都行
 35     tcp_server_socket.bind(("",8080))
 36     #设置端口号复用:服务端程序退出后端口立即释放
 37     #1.socket.SOL_SOCKET:表示当前套接字
 38     #2.socket.SO_REUSEADDR:表示复用端口号的选项
 39     #3.True:确定复用
 40     tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
 41     #设置监听
 42     tcp_server_socket.listen(128)
 43     #等待客户端的连接请求
 44     #注意点:每次当客户端和服务端建立连接成功会返回一个新的>    套接字new_client
 45     #tcp_server_socket套接字只负责接受连接请求,收发消息只>    用返回的新套接字
 46     while True:
 47         new_client,ip_port = tcp_server_socket.accept()
 48         #客户端和服务端建立连接成功,创建子线程,让子线程专
    门负责接受客户端消息
 49         sub_thread = threading.Thread(target = client_socket,args = (ip_port,new_client))
 50         #设置守护主线程,主线程退出子线程直接销毁
 51         sub_thread.setDaemon(True)
 52         #关闭服务端套接字
 53         sub_thread.start()
 54     #服务端需要一直运行
 55     #tcp_server_socket.close()

实现多任务可以用进程或者线程来来完成

但开辟线程对资源的消耗比线程大,所以我们选择创建子线程来完成服务器服务于多客户端

 

posted @ 2020-09-22 20:42  zou-ting-rong  阅读(421)  评论(0编辑  收藏  举报