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 相关文章推荐
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
Python饼状图的绘制实例
Jan 15 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
Python爬虫解析网页的4种方式实例及原理解析
Dec 30 Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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作为Shell脚本语言使用
2006/10/09 PHP
PHP新手上路(三)
2006/10/09 PHP
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
php导入导出excel实例
2013/10/25 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
微信JS接口大全
2016/08/25 Javascript
vue组件与复用详解
2018/04/08 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
python 实现堆排序算法代码
2012/06/05 Python
构建Python包的五个简单准则简介
2015/06/15 Python
django如何通过类视图使用装饰器
2019/07/24 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
J2EE模式面试题
2016/10/11 面试题
写好自荐信的技巧
2013/11/08 职场文书
布达拉宫导游词
2015/02/02 职场文书
党员转正党支部意见
2015/06/02 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
Python 键盘事件详解
2021/11/11 Python
Mysql忘记密码解决方法
2022/02/12 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL