900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python高级——用多线程实现TCP服务端

Python高级——用多线程实现TCP服务端

时间:2019-07-01 18:53:39

相关推荐

Python高级——用多线程实现TCP服务端

需求

1.创建一个TCP服务器接收服务端发送的信息并给予答复

2.以多线程方式实现接收客户端信息

3.间客户端发送的信息解码输出

思路分析

1.创建一个TCP客户端套接字

2.写一个接收消息的方法,可以接收客户端消息并解码输出

3.客户端被动监听,每有一个客户端连接就创建一个子线程执行接收消息方法

代码实现

# 导入模块import socketimport threading# 接收消息def recv(client_socket, ip_port):while True:client_text = client_socket.recv(1024)# 如果接收的消息长度不为0,则将其解码输出if client_text:print("[客户端消息]", ip_port, ":", client_text.decode("gbk"))# 给客户端响应client_socket.send("收到\n".encode())# 当客户端断开连接时,会一直发送''空字符串,所以长度为0已下线else:print("客户端", ip_port, "已下线")client_socket.close()break# 程序主入口def main():# 创建TCP套接字tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 设置端口复用tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)# 绑定端口tcp_socket.bind(("", 8080))# 设置为被动监听状态,128表示最大连接数tcp_socket.listen(128)while True:# 等待客户端连接client_socket, ip_port = tcp_socket.accept()print("[新客户端]:", ip_port, "已连接")# 有客户端连接后,创建一个线程将客户端套接字,IP端口传入recv函数,t1 = threading.Thread(target=recv, args=(client_socket, ip_port))# 设置线程守护t1.setDaemon(True)# 启动线程t1.start()if __name__ == '__main__':main()

执行结果

接收客户端消息

响应客户端消息

客户端下线后识别

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。