首页 > 编程 > Python > 正文

python多线程实现TCP服务端

2019-11-25 11:46:46
字体:
来源:转载
供稿:网友

本文实例为大家分享了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()

执行结果

接收客户端消息

这里写图片描述 

响应客户端消息

这里写图片描述 

客户端下线后识别

这里写图片描述

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表