网络编程进阶---- hamc模块 socketserver模块验证合法性 两者进行通信连接
我们在工作中经常遇到,你公司内的某一台电脑要去访问你的服务器或者一个服务端电脑,那么你是让每一台都进行连接吗? 那不可能的 你肯定要进行限定的
验证客户端链接的合法性:
hamc模块
hamc也是一个加密的模块
但是只能对字节进行加密
import hmacs = '老王'.encode('UTF-8') n = hmac.new(key = s) print(n.hexdigest()) # 6afd402b51938e21ee2ace13ddf0ead1
它的加密的后面还可以选择加密的情况 但是只能对字节
import hmac import os t = os.urandom(30) # os.urandom 是随机获取字节数 s = '老王'.encode('UTF-8') n = hmac.new(key = s,msg= t) # 只对30个字节进行加密 print(n.hexdigest()) # 909271871e55dc492febe63fea8776dd
这个时候我们就用到了一个类似于之前的hashlib模块的加密了hamc模块,hmac模块是专门用来判断合法性的
server端口import os import hmac import socket soctet_key = '老王在隔壁'.encode('UTF-8') sk = socket.socket() sk.bind(('127.0.0.3',9080)) sk.listen() while True:while True:try:conn,addr = sk.accept()random_bytes = os.urandom(30) # 随机获取一段字节 os模块的os.uurandom是专门随机获取字节的conn.send(random_bytes) # 先把你的加密方式发送过去obj = hmac.new(key = socket_key,smg = random_bytes ) # 这是运用hmac对你的信息进行加密 前面的是内容后面是加密的方式ret = obj.hecdigest()msg = conn.recv(1024).decode('UTF-8')if msg == ret :print('是合法的')else:conn.close()finally:sk.close()breakclient端口:import socket import hmac socket_key = '老王在隔壁'.encode('UTF-8') sk = socket.socket() sk.connect(('127.0.0.3',9080)) urandom = sk.recv(1024) # 接收你的加密方式 hamc_obj = hmac.new(key = socket_key,msg = urandom) sk.send(hamc_obj.hexdigest().encode()) # 把你的加密结果发送 让服务端进行对比 sk.close()
View Code
我们一直以来学的TCP服务都是以一个端口一个端口进行的连接,如果你想要使用TCP协议进行多次客户端和服务端进行连接的时候, 我们可以用socketserve模块来进行多次连接
socketserver模块:
server 端import socketserver # 并发编程 class MyServer(socketserver.BaseRequestHandler):def handle(self):self.request.send(b'hello')msg = self.recv(1024)print(msg)if __name__ == '__main__':socketserver.TCPServer.allow_reuse_address = Trueserver = socketserver.ThreadingTCPServer(('127.0.0.1',9000),MyServer)server.serve_forever()client端import socket sk = socket.socket() sk.connect(('127.0.0.1',9000)) msg = sk.recv(1024) print(msg) sk.send(b'bye') sk.close()
View Code
socketserver是解决TCP的并发编程的
转载于:https://www.cnblogs.com/zhaoyunlong/p/9012304.html
网络编程进阶---- hamc模块 socketserver模块验证合法性 两者进行通信连接相关推荐
- 【Socket网络编程进阶与实战】------ Socket网络编程快速入门
前言 本篇博客主要是分享,socket网络编程进阶与实践☞socket网络编程快速入门 一.聊一聊Socket 学习目标与收获
- 第十三章:Python の 网络编程进阶(二)
本課主題 SQLAlchemy - Core SQLAlchemy - ORM Paramiko 介紹和操作 上下文操作应用 初探堡垒机 SQLAlchemy - Core 连接 URL 通过 cre ...
- java网络编程_Java网络编程进阶:通过JSSE创建安全的数据通信
小编说:本文作者孙卫琴,知名IT作家和Java专家.本文将通过一个范例向大家介绍JSSE是如何实现安全的网络通信的. 在网络上,信息在由源主机到目标主机的传输过程中会经过其他计算机.一般情况下,中间的 ...
- [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例
很早以前研究过C#和C++的网络通信,参考我的文章: C#网络编程之Tcp实现客户端和服务器聊天 C#网络编程之套接字编程基础知识 ...
- 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较
在<朴素.Select.Poll和Epoll网络编程模型实现和分析--模型比较>一文中,我们分析了各种模型在处理短连接时的能力.本文我们将讨论处理长连接时各个模型的性能.(转载请指明出于b ...
- 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信
客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...
- 学习笔记(07):C++网络编程进阶-IO模型之重叠Overlapped IO(基于事件通知)
立即学习:https://edu.csdn.net/course/play/6082/113760?utm_source=blogtoedu 重叠Overlapped IO模型 重叠模型让应用程序使用 ...
- 5.1.2 网络编程进阶---开启子进程的两种方式,进程之间内存空间是相互隔离的...
当主进程开启子进程后,主进程会与子进程并行执行.当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸). 进程之间内存是相互隔离的.当创建子进程时,会把父进程的内 ...
- 【Socket网络编程进阶与实战】-----聊天室升级版实战
前言 分享:并发客户端性能优化,数据三层缓冲区优化,心跳包必要性与策略选择等 一.消息调度分析 package com.zcw
最新文章
- html如何呈现在显示器,lcd显示器采用什么显示方式
- 关于数论【康托展开及其逆运算】
- docker学习笔记(七)docker-swarm
- alientek ministm32液晶显示程序_佳显12864中文字库液晶专业生产液晶显示模块
- [html] html如何启动本地的exe应用?
- CSS 类选择器详解——CSS 多类选择器
- 计算机网络—体系结构相关真题练习(二)
- SEO之关键词的选择
- IOI2015部分题解
- skb_buff结构体解析
- 怎样用word制作标准格式公文操作实例
- java打印32位二进制
- 查看计算机ip地址配置信息的命令是,查看电脑配置指令大全
- OGG12.1(LINUX) for 11G R2 RAC classical install 经典抽取模式单项同步配置OGG12.1
- 计算机网络实验一层二叉树,2016考研计算机冲刺考点梳理:二叉树算法(1)
- TYPEC线改成OTG线制作
- my ReadCotton / shortcotton / mianhua / duanrong / mianduanrong
- 如何防止勒索病毒祸害医院:不要裸奔,要灾备造就安全
- 人工智能、机器学习和深度学习的区别
- 运放电路的工作原理_太阳能路灯的工作原理是什么
热门文章
- 各大IT公司2012校园招聘笔试面试整理
- ata计算机考试第一套,计算机ATA考试中级第一套试题配套素材.doc
- python科目真题_不止金融行业, 全民都在学Python
- 酒水行业数字化转型解决方案
- 卫瓴科技X腾讯企业微信“营销赋能、协同增长”闭门沙龙顺利举行 |深圳
- 菜鸟窝-数据结构与算法之稀疏数组
- 微机原理与接口技术--西安电子科技大学-笔记一
- Dockerfile制作镜像
- 内存调试: GC_CONCURRENT freed
- chinapay 新版php接口,银联电子支付(chinapay)接口配置