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 相关文章推荐
用生成器来改写直接返回列表的函数方法
May 25 Python
利用python模拟实现POST请求提交图片的方法
Jul 25 Python
Python random模块用法解析及简单示例
Dec 18 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
Python获取对象属性的几种方式小结
Mar 12 Python
在python中使用pyspark读写Hive数据操作
Jun 06 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
七个非常实用的Python工具包总结
Jun 15 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命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php获取根域名方法汇总
2014/10/28 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
Python异常处理例题整理
2019/07/07 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
《社戏》教学反思
2014/04/15 职场文书
《悯农》教学反思
2014/04/28 职场文书
档案工作汇报材料
2014/08/21 职场文书
二审答辩状格式
2015/05/22 职场文书
员工旷工检讨书
2015/08/15 职场文书