标签:get 创建 style 解释 多个 需要 编写 table round
---------Python基础编程---------
Author : AI菌
【内容讲解】
一、解释: 能够同时服务于多个客户端的TCP服务端程序 二、具体实现步骤 1、编写一个TCP服务端程序,循环等待接受客户端的连接请求 2、当客户端和服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线程阻塞 3、把创建的子线程设置成为守护主线程,防止主线程无法退出。
【代码演示】
""" 一、解释: 能够同时服务于多个客户端的TCP服务端程序 二、具体实现步骤 1、编写一个TCP服务端程序,循环等待接受客户端的连接请求 2、当客户端和服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线程阻塞 3、把创建的子线程设置成为守护主线程,防止主线程无法退出。 """ import socket import threading # 处理客户端请求的函数 def handle_client(new_socket, ip_port): # 循环接收客户端的数据 while True: # 接收客户端发送的数据 recv_data = new_socket.recv(1024) if recv_data: # 对二进制数据进行解码 recv_content = recv_data.decode("utf-8") print("接收客户端的数据为:", recv_content) # 发送数据 new_socket.send("服务端".encode("utf-8")) else: print("客户端下线:", ip_port) break # 关闭套接字 new_socket.close() if __name__ == ‘__main__‘: # 创建tcp服务端套接字 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(("", 9090)) # 设置监听 tcp_server_socket.listen(128) # 循环等待接受客户端的连接请求 while True: # 等待接受客户端的连接请求 new_socket, ip_port = tcp_server_socket.accept() print("客户端为:", ip_port) # 创建子线程,专门负责处理客户端请求 sub_thread = threading.Thread(target=handle_client, args=(new_socket, ip_port)) # 设置守护主线程,防止服务端无法关闭 sub_thread.setDaemon(True) # 启动子线程执行任务 sub_thread.start() # 提示: 服务端程序需要一直运行,所以tcp服务端的套接字可以不用关闭 # tcp_server_socket.close()
【运行结果】
【往期精彩】
?【Python基础编程196 ● 读取文件的4种方式】
?【Python基础编程197 ● 读取文件的4种方式】
?【Python基础编程198 ● 读取文件的4种方式】
?【Python基础编程199 ● Python怎么读/写很大的文件】
?【Python基础编程200 ● 读取文件的4种方式】
?【Python基础编程201 ● 读取文件的4种方式】
?【Python基础编程202 ● 读取文件的4种方式】
?【Python基础编程203 ● 读取文件的4种方式】
【加群交流】
【Python高级编程034 ● 静态web服务器 ● 静态Web服务器-返回固定页面数据】
标签:get 创建 style 解释 多个 需要 编写 table round
原文地址:https://www.cnblogs.com/hezhiyao/p/13669117.html