码迷,mamicode.com
首页 > 其他好文 > 详细

socketServer,模块

时间:2018-03-22 23:07:25      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:check   多线程   digest   类型   使用   sockets   pre   reading   socket   

 

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

hmac摘要模块:

server端:

import os
import socket
import hmac
def check_client(conn):
    secret_key = begg# 密钥
    send_str = os.urandom(32)
    conn.send(send_str)
    hmac_obj = hmac.new(secret_key,send_str)
    secret_ret = hmac_obj.digest()  #bytes类型
    if conn.recv(1024) == secret_ret:
        print(合法的客户端)
        return   True
    else:
        print(非法的客户端)
        return   False


sk = socket.socket()
sk.bind((127.0.0.1‘,8090))
sk.listen()

conn,addr = sk.accept()
ret = check_client(conn)
while ret:
    inp = input(>>>)
    conn.send(inp.encode(utf-8))
    msg = conn.recv(1024)
    print(msg.decode(utf-8))
conn.close()
sk.close()

 

client端:

import socket
import hmac
sk = socket.socket()
sk.connect((127.0.0.1,8090))

recv = sk.recv(1024)
# 用和server端相同的手法对这个字符串进行摘要
secret_key = begg  # 密钥
hmac_obj = hmac.new(secret_key,recv)
ret = hmac_obj.digest()
sk.send(ret)
msg = sk.recv(1024)
if msg:
    print(msg.decode(utf-8))
    while True:
        inp = input(>>>)
        sk.send(inp.encode(utf-8))
        msg = sk.recv(1024)
        print(msg.decode(utf-8))
sk.close()

socketserver:

SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进程” 专门负责处理当前客户端的所有请求。

 

ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 “线程”,该线程用来和客户端进行交互。

1、ThreadingTCPServer基础

使用ThreadingTCPServer:

  • 创建一个继承自 SocketServer.BaseRequestHandler 的类
  • 类中必须定义一个名称为 handle 的方法
  • 启动ThreadingTCPServer

 

socketServer,模块

标签:check   多线程   digest   类型   使用   sockets   pre   reading   socket   

原文地址:https://www.cnblogs.com/jsp0/p/8627469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!