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文件和目录操作详解
Feb 08 Python
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
python中的闭包用法实例详解
May 05 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
python实现自动清理文件夹旧文件
May 10 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
浅谈php7的重大新特性
2015/10/23 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
React diff算法的实现示例
2018/04/20 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
js实现电灯开关效果
2021/01/19 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
四年级下册教学反思
2014/02/01 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
大学生自荐材料范文
2014/12/30 职场文书
泰坦尼克号观后感
2015/06/04 职场文书