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 fileinput模块使用介绍
Nov 30 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
Python切片索引用法示例
May 15 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
python实现京东秒杀功能
Jul 30 Python
python常用函数与用法示例
Jul 02 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 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/05/26 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python3.6数独问题的解决
2019/01/21 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
python修改FTP服务器上的文件名
2019/09/11 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
关于毕业的广播稿
2014/01/10 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
孩子教育的心得体会
2014/09/01 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
python flask框架快速入门
2021/05/14 Python
如何在Python项目中引入日志
2021/05/31 Python