服务器端:

 1 #_*_coding:utf-8_*_
 2 __author__ = 'Linhaifeng'
 3 from socket import *
 4 import hmac,os
 5 
 6 secret_key=b'linhaifeng bang bang bang'
 7 def conn_auth(conn):
 8     '''
 9     认证客户端链接
10     :param conn:
11     :return:
12     '''
13     print('开始验证新链接的合法性')
14     msg=os.urandom(32)
15     conn.sendall(msg)
16     h=hmac.new(secret_key,msg)
17     digest=h.digest()
18     respone=conn.recv(len(digest))
19     return hmac.compare_digest(respone,digest)
20 
21 def data_handler(conn,bufsize=1024):
22     if not conn_auth(conn):
23         print('该链接不合法,关闭')
24         conn.close()
25         return
26     print('链接合法,开始通信')
27     while True:
28         data=conn.recv(bufsize)
29         if not data:break
30         conn.sendall(data.upper())
31 
32 def server_handler(ip_port,bufsize,backlog=5):
33     '''
34     只处理链接
35     :param ip_port:
36     :return:
37     '''
38     tcp_socket_server=socket(AF_INET,SOCK_STREAM)
39     tcp_socket_server.bind(ip_port)
40     tcp_socket_server.listen(backlog)
41     while True:
42         conn,addr=tcp_socket_server.accept()
43         print('新连接[%s:%s]' %(addr[0],addr[1]))
44         data_handler(conn,bufsize)
45 
46 if __name__ == '__main__':
47     ip_port=('127.0.0.1',9999)
48     bufsize=1024
49     server_handler(ip_port,bufsize)
View Code

相关文章:

  • 2022-12-23
  • 2021-09-14
  • 2021-12-04
  • 2021-07-28
  • 2021-06-23
  • 2022-01-01
  • 2021-07-25
  • 2021-07-09
猜你喜欢
  • 2021-12-27
  • 2022-12-23
  • 2022-12-23
  • 2022-01-16
  • 2022-12-23
  • 2021-11-19
相关资源
相似解决方案