day 26 初识进程,验证客户端合法性
验证客户端合法性:
# 1.需要认证
# 程序和用户打交道的时候才会用到用户认证
# 对所有的客户端进行统一的认证 # 我现在要做的事情
# 写一个server端
# 写一个client端 特殊的 符合我的server端要求的代码 # 1.client端不会被其他机器获取到
# 2.即使客户端的代码不在别人手上 有心人仍然可以非法的访问我们的程序 # hashlib
# 密钥
# 随机的字符串 # server 密钥 发送一个随机字符串,密钥为盐,对随机字符串进行摘要 得到一个字符串结果
# client 密钥 密钥为盐,对随机字符串进行摘要 得到一个字符串结果 将结果发送回server端
import os
import hmac
import socket
def auth(conn):
s_key = b'echo'
rand_b = os.urandom(32)
conn.send(rand_b)
obj = hmac.new(s_key, rand_b)
res1 = obj.digest()
res2 = conn.recv(1024)
cmp_res = hmac.compare_digest(res1, res2)
return True sk = socket.socket()
sk.bind(('127.0.0.1', 10010))
sk.listen()
conn, addr = sk.accept()
ret = auth(conn)
if ret:
print('合法连接')
while True:
msg = input('>>>.:')
conn.send(msg.encode())
if msg =='q':break
msg1 = conn.recv(1024).decode()
print(msg1)
conn.close()
sk.close()
# 客户端
import hmac
import socket def auth(sk):
s_key = b'echo'
rand_b = sk.recv(32)
obj = hmac.new(s_key, rand_b)
res2 = obj.digest()
sk.send(res2) sk = socket.socket()
sk.connect(('127.0.0.1', 10010))
auth(sk)
while True:
msg = sk.recv(1024).decode()
print(msg)
if msg == 'q':break
msg1 = input('>>>>: ')
sk.send(msg1.encode())
if msg1 == 'q': break
sk.close()
进程:
进程调度:
先来先服务
短作业优先调度算法
时间片轮转法
多级反馈队列
进程:是计算机中最小的资源分配单位
进程和程序:
程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念
进程:是程序再处理机上的一次执行过程
并发:并发是指资源有限的情况下,两者交替轮流使用资源
并行:在多核处理器中,在同一个精确的时间片刻,有不同的程序在执行

同步:一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成
异步:不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行
day 26 初识进程,验证客户端合法性的更多相关文章
- socketserver和socket的补充(验证客户端合法性)
一.socket的补充 1.参数 socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 参数说明: family 地址系 ...
- Python之路(第三十四篇) 网络编程:验证客户端合法性
一.验证客户端合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现. 客户端验证的总的思路是将服务端随机产生的指定位数的字节发送到客 ...
- python之路----验证客户端合法性
验证客户端链接的合法性 import os import hmac import socket secret_key = b'egg' sk = socket.socket() sk.bind(('1 ...
- socketv 验证客户端链接的合法性,socketserver
补充: send()与sendall() 在python socket编程中,有两个发送TCP的函数,send()与sendall(),区别如下: socket.send(string[, flags ...
- Day 35 验证客户端的合法性+socketserver
一 .getpeername和getsoketopt的用法 服务器端代码 import socket sk =socket.socket() sk.bind(('127.0.0.1',9000)) s ...
- python_网络编程hmac模块验证客户端的合法性
hmac模块: 比较两个函数的密钥是否一致: import hmac import os msg = os.urandom(32) #生成32位随机字节码 def wdc(): key = b'wdc ...
- 总结day26 ----验证客户端的合法性,已经操作系统,进程的简单初识别
前情提要 一:验证客户端的合法性: # .需要认证 # 程序和用户打交道的时候才会用到用户认证 # 对所有的客户端进行统一的认证 # # 我现在要做的事情 # 写一个server端 # 写一个clie ...
- Python之socketserver模块和验证客户端链接的合法性
验证客户端链接的合法性 分布式系统中实现一个简单的客户端链接认证功能 #_*_coding:utf-8_*_ from socket import * import hmac,os secret_ke ...
- python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)
先来回顾一下昨天的内容 黏包现象粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全相 ...
随机推荐
- Mac 命令行,自定义命令
例如自定义命令 gotoXFolder, 直接进入XFolder文件夹, XFolder地址为~/abc/def/Xfolder 步骤: 1. 在home文件夹下创建.profile文件 在.prof ...
- Etcd源码解析(转)
7 Etcd服务端实现 7.1 Etcd启动 Etcd有多种启动方式,我们从最简单的方式入手,也就是从embed的etcd.go开始启动,最后会启动EtcdServer. 先看看etcd.go中的启动 ...
- Shell函数使用方法
Shell函数是一组命令集或语句组成一个可用块.利用函数可以简化脚本编写.函数要求先定义再使用,调用函数时直接使用函数名即可.这里主要介绍shell编程中函数定义.调用.获取函数参数以及获取函数返回值 ...
- c语言基本数据类型及存储方式
; ; ; ; ; ; ; ; float a9 = 109.23; float a10 = 111.23; double a11 = 113.113; double a12 = 115.113; c ...
- Hibernate 再接触 核心开发接口
1.可以重载方法进行配置文件的指定 sessionFactory = new AnnotationConfiguration().configure("hibernate.xml" ...
- ArcGIS案例学习笔记-点群密度统计
ArcGIS案例学习笔记-点群密度统计 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:对于点群,统计分布密度 数据: 方法: 1. 生成格网 2. 统计个数, ...
- mysql 查询上个月某一天
本文地址:http://www.cnblogs.com/jying/p/8877065.html 需求:获取上个月15号的日期 网上一搜一大堆粘贴复制的大坑:(如下是查询上个月最后一天,可是我要的不一 ...
- C++ CBitmap,HBitmap,Bitmap区别及联系
加载一位图,可以使用LoadImage: HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int ...
- windows下搭建vue
1.windows https://nodejs.org/en/download/ 下载安装包2.点击安装 安装完成3.进入cmd npm -v4.安装淘宝镜像cnpm npm下载速度过慢因为安装完n ...
- 运用active和hover实现导航栏的页面切换
.nav ul li a:hover{ background: #3E6EDD;}.nav ul li a:hover img{ display: block;}.nav ul li a.active ...