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基于DES算法加密解密实例
Jun 03 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
python中property和setter装饰器用法
Dec 19 Python
Python简单实现区域生长方式
Jan 16 Python
python图片灰度化处理的几种方法
Jun 23 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/04/25 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
php命名空间学习详解
2014/02/27 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
Python中一般处理中文的几种方法
2019/03/06 Python
Python3+Appium安装使用教程
2019/07/05 Python
python tkinter实现屏保程序
2019/07/30 Python
安装python及pycharm的教程图解
2019/10/10 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
试用期自我鉴定范文
2014/03/20 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
给朋友的道歉短信
2015/05/12 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
建党伟业观后感
2015/06/01 职场文书
入党转正介绍人意见
2015/06/03 职场文书
500字作文之关于爸爸
2019/11/14 职场文书