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的web框架中中编写日志列表的教程
Apr 30 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
CentOS7安装Python3的教程详解
Apr 10 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
tornado+celery的简单使用详解
Dec 21 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
python中的split、rsplit、splitlines用法说明
Oct 23 Python
python自动化测试之Selenium详解
Mar 13 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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
php 执行系统命令的方法
2009/07/07 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
php实现图片缩略图的方法
2016/03/29 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
vue实现通讯录功能
2018/07/14 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
python技能之数据导出excel的实例代码
2017/08/11 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
python 对象和json互相转换方法
2018/03/22 Python
python http基本验证方法
2018/12/26 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
护士自我评价范文
2014/01/25 职场文书
班级年度安全计划书
2014/05/01 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
师德师风整改措施
2014/10/24 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
工作犯错保证书
2015/05/11 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL