Python socket处理client连接过程解析


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实现QQ游戏大家来找茬辅助工具
Sep 14 Python
深入理解python函数递归和生成器
Jun 06 Python
python实现树形打印目录结构
Mar 29 Python
tensorflow 获取变量&打印权值的实例讲解
Jun 14 Python
python去除文件中重复的行实例
Jun 29 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python实现京东订单推送到测试环境,提供便利操作示例
Aug 09 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
Python中常用的高阶函数实例详解
Feb 21 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 #Python
Python如何使用paramiko模块连接linux
Mar 18 #Python
Python selenium页面加载慢超时的解决方案
Mar 18 #Python
Python Selenium 设置元素等待的三种方式
Mar 18 #Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 #Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 #Python
Python中remove漏删和索引越界问题的解决
Mar 18 #Python
You might like
php反射应用示例
2014/02/25 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
用python绘制樱花树
2020/10/09 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
企业厂务公开实施方案
2014/03/26 职场文书
房屋公证委托书
2014/04/03 职场文书
司法局火灾防控方案
2014/06/05 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL