av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

python基于socketserver實(shí)現(xiàn)并發(fā),驗(yàn)證客戶端的合法性

瀏覽:8日期:2022-06-19 14:56:28
目錄一、socketserver實(shí)現(xiàn)并發(fā)二、驗(yàn)證客戶端合法性一、socketserver實(shí)現(xiàn)并發(fā)

tcp協(xié)議的socket是只能和一個客戶端通信的,使用socketserver可以實(shí)現(xiàn)和多個客戶端通信,他是在socket的基礎(chǔ)上進(jìn)行的封裝,底層還是調(diào)用的socket。

socket是底層模塊

socketserver是基于socket完成的

socketserver代碼格式:

服務(wù)端:

import socketserver # 引入模塊import time​​# 類名隨便定義,但是必須繼承socketserver.BaseRequestHandler此類。class Myserver(socketserver.BaseRequestHandler):​ def handle(self): # handle方法,固定名字conn = self.request # conn相當(dāng)于每個客戶端連接過來的,客戶端信息’’’以下就是基于conn客戶端信息,對每個客戶端鏈接到服務(wù)端必須做的操作conn——>等于客戶端的連接信息以此實(shí)現(xiàn)并發(fā)連接’’’while True: try:content = conn.recv(1024).decode(’utf-8’)conn.send(content.upper().encode(’utf-8’))time.sleep(1) except ConnectionResetError:break​​# 對 socketserver.ThreadingTCPServer 類實(shí)例化對象,將IP地址,端口號,以及自己定義的類名傳入,并返回一個對象server = socketserver.ThreadingTCPServer((’127.0.0.1’, 4444), Myserver)server.serve_forever() # 執(zhí)行對象server_forever方法,開啟服務(wù)端

客戶端:

import socket​sk = socket.socket()sk.connect((’127.0.0.1’, 4444))​while True: sk.send(b’heelo’) content = sk.recv(1024).decode(’utf-8’) print(content)二、驗(yàn)證客戶端合法性

在分布式系統(tǒng)中實(shí)現(xiàn)一個簡單的客戶端鏈接認(rèn)證功能,又不像SSL那么復(fù)雜,那么利用hmac+加鹽的方法實(shí)現(xiàn)。

思路:

服務(wù)端發(fā)送隨機(jī)字符串(并用客戶端和服務(wù)端都知道的秘鑰對隨機(jī)字符串進(jìn)行加密)——>客戶端接收到服務(wù)端發(fā)送的隨機(jī)字符串(并用相同的秘鑰進(jìn)行加密發(fā)送回服務(wù)端)——>服務(wù)端接收到客戶端發(fā)送的加密字符串和自己加密的字符串做對比(如果一致,就是合法客戶端,不一致,就立即關(guān)閉)

使用hashlib方法:

服務(wù)端

import socketimport hashlibimport os​# 設(shè)置雙方都擁有的秘鑰secret = ’秘鑰’.encode(’utf-8’)​sk = socket.socket()sk.bind((’127.0.0.1’, 4444))​sk.listen()conn, _ = sk.accept()​# 給服務(wù)端發(fā)送32位隨機(jī)字節(jié)串count = os.urandom(32)conn.send(count)​# 并對字節(jié)串進(jìn)行加鹽加密hs = hashlib.sha1(secret)hs.update(count)info_server = hs.hexdigest()​# 接收客戶端發(fā)送的對字節(jié)串加密后的信息info_client = conn.recv(1024).decode(’utf-8’)​# 客戶端加密后的信息和服務(wù)端加密后的信息做對比if info_server == info_client: # 相等則連接合法,繼續(xù)操作 print(’合法連接’)else: # 不相等則斷開鏈接 print(’非合法用戶’) conn.close()

客戶端

import socketimport hashlib​# 雙方共有的秘鑰secret = ’秘鑰’.encode(’utf-8’)​sk = socket.socket()sk.connect((’127.0.0.1’, 4444))​# 接收服務(wù)端發(fā)送的隨機(jī)字節(jié)count = sk.recv(1024)​# 對隨機(jī)字節(jié)進(jìn)行加密hs = hashlib.sha1(secret)hs.update(count)info = hs.hexdigest().encode(’utf-8’)​# 把加密后的字節(jié)發(fā)送回服務(wù)端做判斷sk.send(info)

以上就是python基于socketserver實(shí)現(xiàn)并發(fā),驗(yàn)證客戶端的合法性的詳細(xì)內(nèi)容,更多關(guān)于python socketserver實(shí)現(xiàn)并發(fā)的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产极品车模吞精高潮呻吟 | 久久久免费电影 | 日韩欧美国产精品一区二区 | 一起操网站 | 99久久精品国产麻豆演员表 | 国产精品一区二区在线 | 午夜伦理影院 | 国产亚洲一区二区三区在线观看 | 色婷婷综合久久久中字幕精品久久 | 在线观看成年视频 | 亚洲精品白浆高清久久久久久 | 中文字幕一区二区三区在线观看 | 性做久久久久久免费观看欧美 | 日韩欧美中文字幕在线观看 | 日韩视频国产 | 亚洲一区三区在线观看 | 欧美成人精品在线 | 亚洲福利在线观看 | 欧美成年网站 | 中文字幕不卡在线观看 | 91久久精品国产 | 久久日韩粉嫩一区二区三区 | 亚洲视频一区 | 亚洲情侣视频 | 国产乱码精品一区二区三区五月婷 | 国产精品国产成人国产三级 | 午夜专区 | caoporn国产 | av网站免费在线观看 | 久久久久久91| 日日操日日干 | 99久久精品免费看国产四区 | 国产高清在线观看 | 九九九久久国产免费 | 黄色国产 | 日韩在线精品强乱中文字幕 | 亚洲视频中文字幕 | 久久久久久美女 | 99热这里都是精品 | 国产成人综合久久 | 日美女逼逼 |