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之数据类型总结
Sep 24 Python
Python读取ini文件、操作mysql、发送邮件实例
Jan 01 Python
Python实现把数字转换成中文
Jun 29 Python
Python引用模块和查找模块路径
Mar 17 Python
Python创建xml文件示例
Mar 22 Python
python Socket之客户端和服务端握手详解
Sep 18 Python
django模板语法学习之include示例详解
Dec 17 Python
python实现装饰器、描述符
Feb 28 Python
python开发游戏的前期准备
May 05 Python
python实现静态服务器
Sep 05 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
python 使用cx-freeze打包程序的实现
Mar 14 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
网站上面有这种切换效果
2006/06/26 Javascript
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
Python编程之属性和方法实例详解
2015/05/19 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
计算机毕业生求职信
2014/06/10 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
SpringBoot整合Minio文件存储
2022/04/03 Java/Android