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中二维阵列的变换实例
Oct 09 Python
在Python中操作列表之List.append()方法的使用
May 20 Python
python图像处理之反色实现方法
May 30 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
Python模拟三级菜单效果
Sep 11 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
Django模板语言 Tags使用详解
Sep 09 Python
Django 限制访问频率的思路详解
Dec 24 Python
Python pip install如何修改默认下载路径
Apr 29 Python
Python如何实现远程方法调用
Aug 07 Python
基于Python实现对比Exce的工具
Apr 07 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
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
js location.replace与location.reload的区别
2010/09/08 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
js实现购物车功能
2018/06/12 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
Python列表操作方法详解
2020/02/09 Python
python不同系统中打开方法
2020/06/23 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
python 实现批量图片识别并翻译
2020/11/02 Python
python中count函数知识点浅析
2020/12/17 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
关于奉献的演讲稿
2014/05/21 职场文书
大学生找工作求职信
2014/07/09 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
2015年导购员工作总结
2015/04/25 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python