服务端: import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): #在这个函数里面编写发送和接收的语句,方法名必须为handle self.request.sendall('请输入内容:'.encode('utf-8')) #向所有连接的客户端发送消息 while True: msg = self.request.recv(1024).decode('utf-8') if msg…
摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类. 除了隐藏了实现细节之外,它督促我们使用类(面向对象的思维)来编写应用程序,并且,这些应用程序是时间驱动的(即,只有在系统中的事件发生的时候,程序才会工作). 事件,包括消息的发送和接收.在原始的服务器循环中,我们阻塞等待请求,当接收到请求时就对其提供服务,然后继续等待.而使用面向对象的socke…
基于tcp的套接字(实现并发),关键就是两个循环,一个链接循环,一个通信循环 基于udp的套接字(不是正真意义上的并发,实现真并发) socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) # 服务端必须满足至少三点:# 1. 绑定一个固定的ip和port# 2. 一直对外提供服务,稳定运行# 3. 能够支持并发import socketserver # 自定义类用来处理通信循环class MyTCPhanler(socketserver.Bas…
使用socketserver 老规矩,先引入import socketserver 必须创建一个类,且继承socketserver.BaseRequestHandler 这个类中必须重写handle(self)函数负责和客户端进行交互,所以的交互都写这里面 可以重写的方法 #socketserver.BaseRequestHandler 类 def setup(self):#请求进来之前的操作 pass def handle(self):#处理请求的操作 pass def finish(self…
socketserver模块 内置模块 (其实现原理为并发) socketserver这个模块主要是为了解决: TCP协议中,服务器不能同时连接多个客户端的问题 是处于socket抽象层和应用层之间的一层, 比socket 更贴近用户. 其使用方法是固定的: 客户端代码: import socket sk = socket.socket() sk.connect(('127.0.0.1',8080)) msg_s = input('>>>') sk.send(msg_s.encode('…
hmac模块: 比较两个函数的密钥是否一致: import hmac import os msg = os.urandom(32) #生成32位随机字节码 def wdc(): key = b'wdc' #密钥 ret = hmac.new(key,msg) #将字节码和key进行加密(必须都为bytes类型)创建一个对象ret digest = ret.digest() #消化 return digest #返回消耗后的密文 def yhf(): key1 = b'wdc' #密钥 ret1…
为什么会出现黏包现象: 首先只有在TCP协议中才会出现黏包现象,是因为TCP协议是面向流的协议,在发送的数据传输的过程中还有缓存机制来避免数据丢失,因此,在连续发送小数据的时候,以及接收大小不符的时候容易出现黏包现象.本质还是因为我们在接收数据的时候不知道发送的数据的长短. 解决黏包问题 在传输大量数据之前首先告诉接收端要发送的数据大小,如果想更漂亮的解决问题,可以通过struct模块来定制协议. struct模块: 功能:可以把一个类型,如数字,转成固定长度的bytes. import str…
Socket网络编程-SocketServer 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SocketServer概述 socket编程过于底层,编程虽然有套路,但是想要写出健壮的代码还是比较困难的,所以很多语言都对 socket底层API进行封装,Python的封装就是socketserver模块.它是网络服务编程框架,便于企业级 快速开发. 类的继承关系如下所示: +------------+ | BaseServer | +------------+ | | v…
[并发编程 - socketserver模块实现并发.[进程查看父子进程pid.僵尸进程.孤儿进程.守护进程.互斥锁.队列.生产者消费者模型] socketserver模块实现并发 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环 socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) socketserver模块的使用 基于TCP协议的套接字--支持并发(拿之前通信的例子,主要针对服务端,客户端不变) # 服务端.py impo…
铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口. 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面, 对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 其实站在你的角度上看,socket就是一个模块. 我们通过调用模块中已…