Network Programming (2)

Verify the legitimacy of the client link:

  If you want to implement a simple client link authentication function in a distributed system, you can use hmac+salt to implement it.

import os
import hmac
import socket

secret_key = ' Gu Qingqiu'.encode( ' utf- 8 ' )

sk = socket.socket()

sk.bind(('127.0.0.1',9000))
sk.listen()
conn,addr = sk.accept()
while True:
    while True:
        try:
            random_num = os.urandom(32) #Random    out 32-bit bytes 
            conn.send(random_num)
            obj = hmac.new(secret_key,random_num)
            ret = obj.hexdigest ()
            msg = conn.recv(1024).decode( ' utf-8 ' )
             if ret == msg:
                 print ( ' The link is valid ' )
             else :
                 print ( ' The link is invalid and will be disconnected ' )
                conn.close()
        finally:
            break
sk.close()
Server
import hmac
import socket

secret_key = ' Gu Qingqiu'.encode( ' utf- 8 ' )

sk = socket.socket()
sk.connect(('127.0.0.1',9000))

random_num = sk.recv (1024 )
obj = hmac.new(secret_key,random_num)
ret = obj.hexdigest (). encode ( ' utf-8 ' )
sk.send (ret)
sk.close()
client

socketserver:

import socketserver

class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()  # self.request 相当于conn
        print('{} wrote:'.format(self.client_address[0]))
        print(self.data)
        self.request.sendall(self.data.upper())

if __name__ == '__main__':
    socketserver.TCPServer.allow_reuse_address = True
    server = socketserver.ThreadingTCPServer(('127.0.0.1',9000),MyServer)
    server.serve_forever()
Server
import socket
sk = socket.socket()

sk.connect(('127.0.0.1',9000))


sk.send(b'hello')

sk.close()
client

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325890018&siteId=291194637