我们在工作中经常遇到,你公司内的某一台电脑要去访问你的服务器或者一个服务端电脑,那么你是让每一台都进行连接吗?  那不可能的  你肯定要进行限定的

验证客户端链接的合法性:

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模块验证合法性 两者进行通信连接相关推荐

  1. 【Socket网络编程进阶与实战】------ Socket网络编程快速入门

    前言 本篇博客主要是分享,socket网络编程进阶与实践☞socket网络编程快速入门 一.聊一聊Socket 学习目标与收获

  2. 第十三章:Python の 网络编程进阶(二)

    本課主題 SQLAlchemy - Core SQLAlchemy - ORM Paramiko 介紹和操作 上下文操作应用 初探堡垒机 SQLAlchemy - Core 连接 URL 通过 cre ...

  3. java网络编程_Java网络编程进阶:通过JSSE创建安全的数据通信

    小编说:本文作者孙卫琴,知名IT作家和Java专家.本文将通过一个范例向大家介绍JSSE是如何实现安全的网络通信的. 在网络上,信息在由源主机到目标主机的传输过程中会经过其他计算机.一般情况下,中间的 ...

  4. [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

    很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识   ...

  5. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--模型比较>一文中,我们分析了各种模型在处理短连接时的能力.本文我们将讨论处理长连接时各个模型的性能.(转载请指明出于b ...

  6. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信

    客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...

  7. 学习笔记(07):C++网络编程进阶-IO模型之重叠Overlapped IO(基于事件通知)

    立即学习:https://edu.csdn.net/course/play/6082/113760?utm_source=blogtoedu 重叠Overlapped IO模型 重叠模型让应用程序使用 ...

  8. 5.1.2 网络编程进阶---开启子进程的两种方式,进程之间内存空间是相互隔离的...

    当主进程开启子进程后,主进程会与子进程并行执行.当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸). 进程之间内存是相互隔离的.当创建子进程时,会把父进程的内 ...

  9. 【Socket网络编程进阶与实战】-----聊天室升级版实战

    前言 分享:并发客户端性能优化,数据三层缓冲区优化,心跳包必要性与策略选择等 一.消息调度分析 package com.zcw

最新文章

  1. html如何呈现在显示器,lcd显示器采用什么显示方式
  2. 关于数论【康托展开及其逆运算】
  3. docker学习笔记(七)docker-swarm
  4. alientek ministm32液晶显示程序_佳显12864中文字库液晶专业生产液晶显示模块
  5. [html] html如何启动本地的exe应用?
  6. CSS 类选择器详解——CSS 多类选择器
  7. 计算机网络—体系结构相关真题练习(二)
  8. SEO之关键词的选择
  9. IOI2015部分题解
  10. skb_buff结构体解析
  11. 怎样用word制作标准格式公文操作实例
  12. java打印32位二进制
  13. 查看计算机ip地址配置信息的命令是,查看电脑配置指令大全
  14. OGG12.1(LINUX) for 11G R2 RAC classical install 经典抽取模式单项同步配置OGG12.1
  15. 计算机网络实验一层二叉树,2016考研计算机冲刺考点梳理:二叉树算法(1)
  16. TYPEC线改成OTG线制作
  17. my ReadCotton / shortcotton / mianhua / duanrong / mianduanrong
  18. 如何防止勒索病毒祸害医院:不要裸奔,要灾备造就安全
  19. 人工智能、机器学习和深度学习的区别
  20. 运放电路的工作原理_太阳能路灯的工作原理是什么

热门文章

  1. 各大IT公司2012校园招聘笔试面试整理
  2. ata计算机考试第一套,计算机ATA考试中级第一套试题配套素材.doc
  3. python科目真题_不止金融行业, 全民都在学Python
  4. 酒水行业数字化转型解决方案
  5. 卫瓴科技X腾讯企业微信“营销赋能、协同增长”闭门沙龙顺利举行 |深圳
  6. 菜鸟窝-数据结构与算法之稀疏数组
  7. 微机原理与接口技术--西安电子科技大学-笔记一
  8. Dockerfile制作镜像
  9. 内存调试: GC_CONCURRENT freed
  10. chinapay 新版php接口,银联电子支付(chinapay)接口配置