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下的常用下载安装工具pip的安装方法
Nov 13 Python
Python解析树及树的遍历
Feb 03 Python
Python Socket编程详细介绍
Mar 23 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
Python docx库用法示例分析
Feb 16 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
Django 实现图片上传和下载功能
Dec 31 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
Python对excel的基本操作方法
Feb 18 Python
教你漂亮打印Pandas DataFrames和Series
May 29 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 strtr() 函数使用说明
2008/11/21 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
小程序实现左滑删除效果
2019/07/25 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python的垃圾回收机制详解
2019/08/28 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
C#面试题
2016/05/06 面试题
Python里面如何拷贝一个对象
2014/02/17 面试题
运动会通讯稿500字
2014/02/20 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
网络营销实训总结
2015/08/03 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js