1. 程式人生 > >03 驗證合法性連接的服務端

03 驗證合法性連接的服務端

ket color data con big bsp log import int

from socket import *
import hmac,os

secret_key=bJedan has a big key!
def conn_auth(conn):
    ‘‘‘
    認證客戶端鏈接
    :param conn:
    :return:
    ‘‘‘
    print(開始驗證新鏈接的合法性)
    msg=os.urandom(32)#生成一個32字節的隨機字符串
    conn.sendall(msg)
    h=hmac.new(secret_key,msg)
    digest=h.digest()
    respone
=conn.recv(len(digest)) return hmac.compare_digest(respone,digest) def data_handler(conn,bufsize=1024): if not conn_auth(conn): print(該鏈接不合法,關閉) conn.close() return print(鏈接合法,開始通信) while True: data=conn.recv(bufsize) if not data:break conn.sendall(data.upper()) def server_handler(ip_port,bufsize,backlog
=5): ‘‘‘ 只處理鏈接 :param ip_port: :return: ‘‘‘ tcp_socket_server=socket(AF_INET,SOCK_STREAM) tcp_socket_server.bind(ip_port) tcp_socket_server.listen(backlog) while True: conn,addr=tcp_socket_server.accept() print(新連接[%s:%s] %(addr[0],addr[1])) data_handler(conn,bufsize)
if __name__ == __main__: ip_port=(127.0.0.1,9999) bufsize=1024 server_handler(ip_port,bufsize)

03 驗證合法性連接的服務端