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下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
python3.5基于TCP实现文件传输
Mar 20 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
Python3之手动创建迭代器的实例代码
May 22 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
python 学习GCN图卷积神经网络
May 11 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 simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
php和html的区别点详细总结
2019/09/24 PHP
php7性能提升的原因详解
2019/10/13 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python autoescape标签用法解析
2020/01/17 Python
python range实例用法分享
2020/02/06 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python通过format函数格式化显示值
2020/10/17 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
元旦晚会邀请函
2014/01/27 职场文书
企业总经理职责
2014/02/02 职场文书
年终总结会议主持词
2014/03/17 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
母亲节主题班会
2015/08/14 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
Python Django模型详解
2021/10/05 Python