You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

35 lines
873 B

  1. import socket
  2. import json
  3. MSS = 20476 # MSS = Server buffer size (20480) - data header size (4)
  4. class Query:
  5. type = ''
  6. key = ''
  7. def __init__(self, type, key):
  8. self.type = type
  9. self.key = key
  10. def json_str(self):
  11. return json.dumps(self.__dict__)
  12. def await_response(s):
  13. data, addr = s.recvfrom(MSS)
  14. print(f'Server: {json.loads(data)}')
  15. if __name__ == "__main__":
  16. server_ip, server_port = ('127.0.0.1', 50000)
  17. queries = (Query('A', 'example.com'),
  18. Query('PTR', '1.2.3.4'),
  19. Query('CNAME', 'moodle.com'))
  20. with socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM) as s:
  21. for query in queries:
  22. print(f'Performing query {query.json_str()}:')
  23. s.sendto(query.json_str().encode(), (server_ip, server_port))
  24. await_response(s)