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 正则式使用心得
May 07 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
Python的时间模块datetime详解
Apr 17 Python
python3下实现搜狗AI API的代码示例
Apr 10 Python
python中的decimal类型转换实例详解
Jun 26 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
详解Python3定时器任务代码
Sep 23 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
用Python提取PDF表格的方法
Apr 11 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
javascript的事件描述
2006/09/08 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python实现的分层随机抽样案例
2020/02/25 Python
python二维图制作的实例代码
2020/12/03 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
结婚周年感言
2014/02/24 职场文书
法人代表授权委托书
2014/04/08 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
公务员考察材料
2014/12/23 职场文书
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python