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设计模式之代理模式实例
Apr 26 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
python中hashlib模块用法示例
Oct 30 Python
Python中正则表达式的用法总结
Feb 22 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
python 从list中随机取值的方法
Nov 16 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 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程序效率优化的一些策略小结
2010/07/17 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
使用python画社交网络图实例代码
2019/07/10 Python
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
给校长的建议书
2014/03/12 职场文书
团队队名口号大全
2014/06/06 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android