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 深入理解yield
Sep 06 Python
Python中的迭代器漫谈
Feb 03 Python
python实现中文输出的两种方法
May 09 Python
Python三级菜单的实例
Sep 13 Python
python实现媒体播放器功能
Feb 11 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
Python----数据预处理代码实例
Mar 20 Python
python使用minimax算法实现五子棋
Jul 29 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
python列表推导式操作解析
Nov 26 Python
python3爬取torrent种子链接实例
Jan 16 Python
Python定义一个Actor任务
Jul 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
层叠菜单的动态生成
2006/10/09 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
利用javascript查看html源文件
2006/11/08 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
vue项目上传Github预览的实现示例
2018/11/06 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
python机器学习库xgboost的使用
2020/01/20 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
介绍一下JNDI的基本概念
2013/07/26 面试题
环保倡议书怎么写
2014/05/16 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
合同范本之电脑出租
2019/08/13 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript