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实现正整数分解质因数操作示例
Aug 01 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
Python自动登录QQ的实现示例
Aug 28 Python
python 实用工具状态机transitions
Nov 21 Python
10个顶级Python实用库推荐
Mar 04 Python
解决python存数据库速度太慢的问题
Apr 23 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
php多进程应用场景实例详解
2019/07/22 PHP
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
高三自我鉴定范文
2013/10/19 职场文书
三下乡活动方案
2014/01/31 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
画展邀请函
2015/01/31 职场文书
企业催款函范本
2015/06/24 职场文书
离婚财产分割协议书
2015/08/11 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android