python多线程实现TCP服务端


Posted in Python onSeptember 03, 2019

本文实例为大家分享了python多线程实现TCP服务端的具体代码,供大家参考,具体内容如下

需求

1.创建一个TCP服务器接收服务端发送的信息并给予答复
2.以多线程方式实现接收客户端信息
3.间客户端发送的信息解码输出

思路分析

1.创建一个TCP客户端套接字
2.写一个接收消息的方法,可以接收客户端消息并解码输出
3.客户端被动监听,每有一个客户端连接就创建一个子线程执行接收消息方法

代码实现

# 导入模块
import socket
import 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()

执行结果

接收客户端消息

python多线程实现TCP服务端 

响应客户端消息

python多线程实现TCP服务端 

客户端下线后识别

python多线程实现TCP服务端

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的Numpy入门教程
Apr 26 Python
Python数据结构之单链表详解
Sep 12 Python
简单实现python收发邮件功能
Jan 05 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
Python如何实现爬取B站视频
May 20 Python
python脚本第一行如何写
Aug 30 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
Python实现多线程/多进程的TCP服务器
Sep 03 #Python
python+selenium 点击单选框-radio的实现方法
Sep 03 #Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 #Python
python实现单链表的方法示例
Sep 03 #Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 #Python
python网络编程之多线程同时接受和发送
Sep 03 #Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 #Python
You might like
php截取后台登陆密码的代码
2012/05/05 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
React事件处理的机制及原理
2018/12/03 Javascript
小程序转发探索示例
2019/02/19 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python psutil模块简单使用实例
2015/04/28 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
妇联主席先进事迹
2014/05/18 职场文书
教师学期个人总结
2015/02/11 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
爱国主义主题班会
2015/08/14 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Python Matplotlib绘制动画的代码详解
2022/05/30 Python