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 21 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
Python 迭代器工具包【推荐】
May 06 Python
Python入门_浅谈for循环、while循环
May 16 Python
Python爬取附近餐馆信息代码示例
Dec 09 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
python常用函数与用法示例
Jul 02 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
python中wx模块的具体使用方法
May 15 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php 生成短网址原理及代码
2014/01/23 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
python实现学生管理系统开发
2020/07/24 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
Python中Selenium模块的使用详解
2020/10/09 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
药学专业大学生自荐信
2013/09/28 职场文书
培训演讲稿范文
2014/01/12 职场文书
工作个人的自我评价
2014/01/14 职场文书
二年级数学教学反思
2014/01/21 职场文书
库房保管员岗位职责
2014/04/07 职场文书
师德承诺书
2015/01/20 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python