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…
服务端: 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…
什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 详细资料查看菜鸟教程http://www.runoob.com/python3/python3-socket.html 案例1 - 实现连接: 1.1服务端 # -*- coding: UTF-8 -*- # Filename : Python_网络编程_服务器端.py #引入模块 import socket,sy…
铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口. 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面, 对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 其实站在你的角度上看,socket就是一个模块. 我们通过调用模块中已…
一 .getpeername和getsoketopt的用法 服务器端代码 import socket sk =socket.socket() sk.bind(('127.0.0.1',9000)) sk.listen() conn,addr =sk.accept() conn.send(b'gdadfadsd') print('getpeername:\n',conn.getpeername()) #连接到当前套接字的远端地址. print('getsocketop:\n',sk.getsock…
前情提要 一:验证客户端的合法性: # .需要认证 # 程序和用户打交道的时候才会用到用户认证 # 对所有的客户端进行统一的认证 # # 我现在要做的事情 # 写一个server端 # 写一个client端 特殊的 符合我的server端要求的代码 # .client端不会被其他机器获取到 # .即使客户端的代码不在别人手上 有心人仍然可以非法的访问我们的程序 # hashlib # 密钥 # 随机的字符串 # server 密钥 发送一个随机字符串,密钥为盐,对随机字符串进行摘要 得到一个字符…
摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类. 除了隐藏了实现细节之外,它督促我们使用类(面向对象的思维)来编写应用程序,并且,这些应用程序是时间驱动的(即,只有在系统中的事件发生的时候,程序才会工作). 事件,包括消息的发送和接收.在原始的服务器循环中,我们阻塞等待请求,当接收到请求时就对其提供服务,然后继续等待.而使用面向对象的socke…
一直不是很清楚服务器的定义,对于什么是服务器/客户端架构也只有一个模糊的感觉.最近开始学习,才明白一些什么服务器和客户端的关系. 所谓的服务器,就是提供服务的东西,它是一个硬件或者软件,可以向一个或者多个客户端提供所需要的服务.它存在的目的就是等待客户的请求,然后给客户服务,再接着等待请求. 而客户端,就来连上一个服务器,提出自己的请求,然后等待获得反馈. 比如说,打印机就是一个服务器的例子,与之相连的计算机就是客户端,通过网络连接打印机后,给它提出服务需求(打印)和传输数据(传输内容),然后打…
hmac模块: 1.模块初识: import hmac # h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes # 密文 = h.digest() # hmac.compare_digest() #括号内传另外一个密文,看是否相等 h = hmac.new(b') digest = h.digest() print(digest) #>>>> b'\xa4<\r\xf8\xec0\x7f\x8ao…