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 ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Python中模块string.py详解
Mar 12 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
python3 http提交json参数并获取返回值的方法
Dec 19 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
python实现高效的遗传算法
Apr 07 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获取301跳转URL简单实例
2013/12/16 PHP
php检测文件编码的方法示例
2014/04/25 PHP
php遍历CSV类实例
2015/04/14 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
python函数局部变量用法实例分析
2015/08/04 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python3实现Web网页图片下载
2016/01/28 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
python实现顺时针打印矩阵
2019/03/02 Python
python实现机器人卡牌
2019/10/06 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
保护环境倡议书
2014/04/14 职场文书
10的分与合教学反思
2014/04/30 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
离婚协议书怎么写
2014/09/12 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS