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 BeautifulSoup使用方法详解
Nov 21 Python
零基础写python爬虫之爬虫编写全记录
Nov 06 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
python3学生名片管理v2.0版
Nov 29 Python
python开启debug模式的方法
Jun 27 Python
python 默认参数相关知识详解
Sep 18 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
pycharm 对代码做静态检查操作
Jun 09 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
Python3读写ini配置文件的示例
Nov 06 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 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
URL Rewrite的设置方法
2007/01/02 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
新闻内页-JS分页
2006/06/07 Javascript
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
Python中的变量和作用域详解
2016/07/13 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
小学教师师德感言
2014/02/10 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
python 离散点图画法的实现
2022/04/01 Python
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js