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实现115网盘自动下载的方法
Sep 30 Python
Python中实现常量(Const)功能
Jan 28 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
python回调函数中使用多线程的方法
Dec 25 Python
python 重命名轴索引的方法
Nov 10 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
python接口自动化(十六)--参数关联接口后传(详解)
Apr 16 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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图片验证码代码
2008/03/27 PHP
php 伪静态之IIS篇
2014/06/02 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python3中property使用方法详解
2019/04/23 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
检讨书怎么写
2015/01/23 职场文书
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Java设计模式之享元模式示例详解
2022/03/03 Java/Android
python通过新建环境安装tfx的问题
2022/05/20 Python