网站标题分隔符,wordpress 自定义菜单设置,给网站做引流多少钱,怎么做网站分析前面学了了套接字编程、tcp服务端客户端开发、面向对象版的服务端客户端、带有端口复用的服务端。 这里使用多线程开发多任务版的服务端 多任务版本的TCP服务器
来一个客户#xff0c;就为其创建一个线程
import socket
import threadingclass WebServer:# 3、定义一个__ini…前面学了了套接字编程、tcp服务端客户端开发、面向对象版的服务端客户端、带有端口复用的服务端。 这里使用多线程开发多任务版的服务端 多任务版本的TCP服务器
来一个客户就为其创建一个线程
import socket
import threadingclass WebServer:# 3、定义一个__init__方法初始化套接字对象def __init__(self):self.tcp_server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 设置端口复用在上一次关闭服务器后端口不会立即释放需要设置端口复用self.tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) # 参数2SOL_SOCKET表示当前套接字参数3SO_REUSEADDR表示端口复用参数4True表示开启端口复用默认是false要等待很长时间端口才会自动释放self.tcp_server_socket.bind((127.0.0.1, 8000)) # 如果是本机可以不写ip地址self.tcp_server_socket.listen(128) # 128表示最大连接数# 4、定义一个start方法启动服务器接收客户端连接def start(self):while True:# 等待接受客户端的连接请求new_socket, ip_port self.tcp_server_socket.accept()# 当接收到客户端连接请求后创建一个线程线程内调用自身的handle_request()方法用于接收和发送消息封装性sub_thread threading.Thread(targetself.handle_request, args(new_socket, ip_port))sub_thread.start()# 5、定义一个handle_request方法用于接收和发送消息def handle_request(self, new_socket, ip_port):# 接收某个客户端发送过来的消息recv_data new_socket.recv(1024).decode(utf-8) # 实际工作中一条数据大小在1~1.5k之间print(f接收到的数据为{recv_data})# 发送消息给客户端new_socket.send(信息已收到.encode(utf-8))# 关闭套接字new_socket.close()# 定义一个程序的执行入口
if __name__ __main__:# 1、实例化服务器对象server WebServer()# 2、启动服务器server.start()