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获取图片颜色信息的方法
Mar 18 Python
Python中shutil模块的学习笔记教程
Apr 04 Python
利用python获取Ping结果示例代码
Jul 06 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Python解析并读取PDF文件内容的方法
May 08 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 Python
Python在OpenCV里实现极坐标变换功能
Sep 02 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
Python基础之Socket通信原理
Apr 22 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 $_SERVER详解
2009/01/16 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php生成图片验证码的方法
2016/04/15 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
JSON stringify方法原理及实例解析
2020/10/23 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
在pycharm中显示python画的图方法
2019/08/31 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
会计专业自荐信范文
2013/12/02 职场文书
演讲稿怎么写
2014/01/07 职场文书
通知书大全
2015/04/27 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis