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 相关文章推荐
php使用递归与迭代实现快速排序示例
Jan 23 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
Python按行读取文件的简单实现方法
Jun 22 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 Python
python DataFrame转dict字典过程详解
Dec 26 Python
Python利用FFT进行简单滤波的实现
Feb 26 Python
Django通过json格式收集主机信息
May 29 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
Nov 24 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中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
php实现学生管理系统
2020/03/21 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
浅说js变量
2011/05/25 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
Python如何实现转换URL详解
2019/07/02 Python
python logging模块的使用总结
2019/07/09 Python
浅析使用Python搭建http服务器
2019/10/27 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
SQL Server笔试题
2012/01/10 面试题
什么是规则表达式
2012/05/03 面试题
《和我们一样享受春天》教学反思
2014/02/07 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
校企合作协议书
2014/04/16 职场文书
优质服务口号
2014/06/11 职场文书
银行委托书范本
2014/09/28 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
如何利用Python实现一个论文降重工具
2021/07/09 Python