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实现的石头剪子布代码分享
Aug 22 Python
详解Python当中的字符串和编码
Apr 25 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python冲顶大会 快来答题!
Jan 17 Python
Python Logging 日志记录入门学习
Jun 02 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
python调用私有属性的方法总结
Jul 24 Python
Python上下文管理器Content Manager
Jun 26 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过滤危险html代码的函数
2008/07/22 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
Json解析的方法小结
2016/06/22 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
对python的文件内注释 help注释方法
2018/05/23 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
汽车专业毕业生推荐信
2013/11/12 职场文书
城市创卫标语
2014/06/17 职场文书
律师催款函范文
2015/06/24 职场文书
Java字符串逆序方法详情
2022/03/21 Java/Android