python 39 socketserver 模块并发通信
socketserver模块
socketserver模块实现一个服务端与多个客户端通信。是在socket的基础上进行了一层封装,底层还是调用的socket。
socketserver干了两件事:
1、一个是循环建立链接的部分,每个客户链接都可以连接成功
2、一个通讯循环的部分,就是每个客户端链接成功之后,要循环的和客户端进行通信。
# 服务端
#类中查找属性的顺序:ThreadingTCPServer->ThreadingMixIn->TCPServer->BaseServer
import socketserver
class MyServer(socketserver.BaseRequestHandler):
def handle(self):
"""
必须用handle,因为源码中提供handle扩展的方法接口。
self.request 相当于 conn
self.client_address 相当于addr
"""
while 1:
from_client_msg = self.request.recv(1024)
print(f'来自客户端{self.client_address}的消息:{from_client_msg.decode("utf-8")}')
msg = input(">>>").encode('utf-8')
self.request.send(msg)
self.request.close()
if __name__ == '__main__':
# 设置allow_reuse_address允许服务器重用地址
socketserver.TCPServer.allow_reuse_address = True
server = socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyServer) # 进行bind、listen,连接一个开启一个线程
server.serve_forever() # 一直开启服务,并且进行了accept,创建conn,addr
# 客户端(可开启多个)
import socket
client = socket.socket()
client.connect(('127.0.0.1',8080))
while 1:
to_server_msg = input('>>>').encode('utf-8')
client.send(to_server_msg)
from_server_msg = client.recv(1024)
print(f'来自客户端消息:{from_server_msg.decode("utf-8")}')
client.close()
python 39 socketserver 模块并发通信的更多相关文章
- python之socketserver实现并发
python之socketserver实现并发 服务端 import socketserver #socketserver模块是用来实现并发 # 我们自己的类里一定要继承socketserver.Ba ...
- 浅析python中socketserver模块使用
虽然说用python编写简单的网络程序狠方便,但是复杂一点的网络程序还是用现成的框架比较好,这样就可以专心事物逻辑,而不是套接字的各种细节.Socketserver模块简化了编写网络服务程序,同时so ...
- Python之socketserver模块和验证客户端链接的合法性
验证客户端链接的合法性 分布式系统中实现一个简单的客户端链接认证功能 #_*_coding:utf-8_*_ from socket import * import hmac,os secret_ke ...
- 网络 --- 4 socketserver模块并发 连接合法性
一.socketserver模块 ②服务端 ③客户端 二.连接合法性 ①os.urandom(n) 一种bytes类型的随机生成n个字节字符串的方法 而且每次生成的值都不相同.再加上md5 ...
- python之 socketserver模块的使用
在我们正常的使用socket模块来写一个server的程序就会显得比较的复杂通常一般流程为 1.生成socket实例对象 2.绑定地址 3.开始监听 4.接收数据 一般demo为 # 服务器 impo ...
- socketserver 模块并发
socketserver是将socket封装的类. 实例: 服务端: import socketserver class Myserver(socketserver.BaseRequestHandle ...
- Python进阶----UDP协议使用socket通信,socketserver模块实现并发
Python进阶----UDP协议使用socket通信,socketserver模块实现并发 一丶基于UDP协议的socket 实现UDP协议传输数据 代码如下:
- Python网络编程(3)——SocketServer模块与简单并发服务器
主要类型 该模块有四个比较主要的类,其中常用的是 TCPServer 和 UDPServer. 1. TCPServer 2. UDPServer 3. UnixStreamServer,类似于TCP ...
- Python网络编程(2)-粘包现象及socketserver模块实现TCP并发
1. 基于Tcp的远程调用命令实现 很多人应该都使用过Xshell工具,这是一个远程连接工具,通过上面的知识,就可以模拟出Xshell远程连接服务器并调用命令的功能. Tcp服务端代码如下: impo ...
随机推荐
- socket发送请求,协程
1.socket发送请求 #发送请求的方式 #方式一 import requests ret = requests.get("https://www.baidu.com/s?wd=abc&q ...
- SQL Server 设置默认数据库
STEP 1 调用系统函数 查看SQL Server的当前用户名 SELECT SUSER_NAME(); NOTE : 系统函数的调用跟sql语句执行一样 Paste_Image.png 运行结果 ...
- C#编程之接口
1.定义 接口是把公共方法和属性组合起来,以封装特定功能的一个集合.(一旦定义了接口,就可以在类中实现它.这样类就可以支持接口所指定的所有属性和成员) 注意1:接口不能单独存在.不能像实例化一个类那样 ...
- 【Kali】kali linux的安装
资源准备 制作U盘启动盘 准备kali_Linux的分区 禁用快速启动 安装kali_linux 在这篇Blog中笔者将会讲解如何安装kali_linux,kali可以安装到虚拟机上,但这里笔者强烈建 ...
- Clock Crossing Adapter传输效率分析 (Latency增加,传输效率降低)
原创By DeeZeng [ Intel FPGA笔记 ] 在用Nios II测试 DDR3时候发现一个现象 (测试为:写全片,读全片+比对) 用单独的PLL产生时钟(200MHz)驱动 Nios I ...
- to_string()函数(C++)
to_string函数,这是C++11新增的,使用非常方便,简单查了下:C++11标准增加了全局函数std::to_string 函数原型:string to_string (int val);str ...
- thinkphp 多对多表查询
1.表 班级表classes 学生表student 中间表classes_students 2.使用模型关联查询 新建模型 Classes在里面添加代码 ClassesStudent中间表模型,可以不 ...
- 灵活使用Maven Profile
项目中一直应用Maven的profile特性解决不同环境的部署问题.最近在尝试解决本地调试环境的时候碰到一些问题,顺便仔细研究了一下.因为项目仍然在用普通SpringMVC架构,没有切换到Spring ...
- thinkphp3.2使用七牛云上传文件
最近项目中用到了七牛云服务,来分享一下thinkphp使用七牛云来进行文件上传 1.首先在七牛云创建一个空间,例如空间名为test.获取secrectKey,accessKey 2.在thinkphp ...
- ASP.NET Core on K8S深入学习(3)Deployment
上一篇<部署过程解析与安装Dashboard>中我们了解K8S的部署过程,这一篇我们来了解一下K8S为我们提供的几种应用运行方式:Deployment.DaemonSet与Job,它们是K ...