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编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
python3中set(集合)的语法总结分享
Mar 24 Python
Python实现的knn算法示例
Jun 14 Python
使用EduBlock轻松学习Python编程
Oct 08 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
关于Tensorflow分布式并行策略
Feb 03 Python
调整Jupyter notebook的启动目录操作
Apr 10 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
Jun 18 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 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测试硬盘写入速度示例
2014/01/27 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python使用KNN算法手写体识别
2018/02/01 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
python关于调用函数外的变量实例
2019/12/26 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
查询优化的一般准则有哪些
2015/03/08 面试题
How to spawning asynchronous work in J2EE
2016/08/29 面试题
国培教师自我鉴定
2014/02/12 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
监理中标通知书
2015/04/16 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
高三毕业感言
2015/07/30 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS