Python通过socketserver处理多个链接


Posted in Python onMarch 18, 2020

socket只能处理一个client连接,如果需要并发处理多个链接则需要使用socketserver,下面是代码示例以及注释

server端

import socketserver
#之前的socket只能同时处理一个客户端,当需要并发处理client发送的信息是需要使用到socketserver,下面创建一个类,继承socketserver其对应实例就有并发能力
class My_Tcp_Handler(socketserver.BaseRequestHandler):
  #下面的handler是自己定义的server与client交互的过程,所有交互过程都在此方法内部实现.方法名handle是固定的
  def handle(self):
    while True:
      try:
        #下面将收到的数据打印并且大写后发回给客户端
        self.data = self.request.recv(1024)
        print(self.data.decode(encoding="utf-8"))
        self.send_data = self.data.decode(encoding="utf-8").upper().encode(encoding="utf-8")
        self.request.sendall(self.send_data)
      except ConnectionResetError as e:
        print("一个客户端关闭了连接")
        break

#实例化socketserver
My_server = socketserver.ThreadingTCPServer(("0.0.0.0", 8888), My_Tcp_Handler) #ThreadingTCPServer是使用多线程,ForkingTCPServer是使用多进程处理并发
#启动实例
My_server.serve_forever()

下面是client端

import socket
client = socket.socket()
client.connect(("127.0.0.1", 8888))
while True:
  msg = input()
  if len(msg) == 0:
    continue
  client.send(msg.encode(encoding="utf-8")) #如果发送中文需要对其进行encode,接收也需要decode;英文前面直接加b指定类型
  client_rec = client.recv(1024).decode(encoding="utf-8")
  print("client_rec:", client_rec)
client.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的__new__与__init__魔术方法理解笔记
Nov 08 Python
浅析Python中signal包的使用
Nov 13 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
利用Python破解斗地主残局详解
Jun 30 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
python查看模块,对象的函数方法
Oct 16 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
Python多线程正确用法实例解析
May 30 Python
python 爬取京东指定商品评论并进行情感分析
May 27 Python
python实现密码强度校验
Mar 18 #Python
Python tcp传输代码实例解析
Mar 18 #Python
python实现用户名密码校验
Mar 18 #Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 #Python
Selenium启动Chrome时配置选项详解
Mar 18 #Python
python+selenium+Chrome options参数的使用
Mar 18 #Python
selenium WebDriverWait类等待机制的实现
Mar 18 #Python
You might like
PHP操作文件方法问答
2007/03/16 PHP
php中socket通信机制实例详解
2015/01/03 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
js 走马灯简单实例
2013/11/21 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
Python运算符重载用法实例分析
2015/06/01 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
分析python切片原理和方法
2017/12/19 Python
Python多进程写入同一文件的方法
2019/01/14 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
IBatis持久层技术
2016/07/18 面试题
忠诚教育心得体会
2014/09/03 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
redis实现排行榜功能
2021/05/24 Redis
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python