#!/usr/bin/env python3 import logging from rdt import socket from time import time SERVER_ADDR = '127.0.0.1' SERVER_PORT = 9999 with open('alice.txt', 'rb') as f: DATA = f.read() if __name__ == '__main__': logging.basicConfig(level=logging.INFO, format='[CLIENT %(levelname)s] %(asctime)s: %(message)s') client = socket() start_time = time() client.sendto(DATA, (SERVER_ADDR, SERVER_PORT)) data, server_addr = client.recvfrom() rtt = time() - start_time assert data == DATA print('Received: ', data) print('Round trip time:', rtt)
import rdt auth = '00005e00010100e04c68054d0800450002030a04400080060000ac1052a7ac12018dffc4005055fc78f6cbe5dcb050182014ae4c0000504f5354202f6170692f636c69656e742f417574682f436865636b20485454502f312e310d0a486f73743a20706d732e73757374632e6564752e636e0d0a557365722d4167656e743a204d6f7a696c6c612f352e30202857696e646f7773204e542031302e303b2057696e36343b207836343b2072763a36392e3029204765636b6f2f32303130303130312046697265666f782f36392e300d0a4163636570743a202a2f2a0d0a4163636570742d4c616e67756167653a207a682d434e2c7a683b713d302e382c7a682d54573b713d302e372c7a682d484b3b713d302e352c656e2d55533b713d302e332c656e3b713d302e320d0a4163636570742d456e636f64696e673a20677a69702c206465666c6174650d0a582d5265717565737465642d576974683a20584d4c48747470526571756573740d0a436f6e6e656374696f6e3a206b6565702d616c6976650d0a526566657265723a20687474703a2f2f706d732e73757374632e6564752e636e2f636c69656e742f6e65772f637072696e7450632f637072696e742e68746d6c0d0a436f6f6b69653a204f53455353494f4e49443d61636536656132303934303434363133393864333266323338656636653234390d0a436f6e74656e742d4c656e6774683a20300d0a0d0a' data = '00005e00010100e04c68054d0800450005c10b32400080060000ac1052a7ac12018dffc40050560312f1cbe5df9350182011b20a0000383432203030303030206e200a30303030333237303232203030303030206e200a30303030333237313635203030303030206e200a30303030333237323336203030303030206e200a30303030333237333037203030303030206e200a30303030333237343534203030303030206e200a30303030333237373531203030303030206e200a30303030333237383933203030303030206e200a30303030333237393530203030303030206e200a30303030333238303037203030303030206e200a30303030333838333732203030303030206e200a30303030333930343734203030303030206e200a30303030333930353737203030303030206e200a30303030333930363238203030303030206e200a30303030333930363739203030303030206e200a30303030333930373330203030303030206e200a30303030333930373832203030303030206e200a30303030333930383333203030303030206e200a30303030333930383834203030303030206e200a30303030333931303432203030303030206e200a30303030333931303933203030303030206e200a30303030333931313434203030303030206e200a30303030333931313935203030303030206e200a30303030333931323436203030303030206e200a30303030333931323937203030303030206e200a30303030333931333438203030303030206e200a30303030333931353034203030303030206e200a30303030333931353535203030303030206e200a30303030333931363036203030303030206e200a30303030333931363537203030303030206e200a30303030333931383135203030303030206e200a30303030333931383636203030303030206e200a30303030333931393137203030303030206e200a747261696c65720a3c3c2f53697a6520323030372f526f6f7420383932203020522f496e666f20383834203020522f4944205b3c66323065613231326238383638336532303932656134333636363864613136663e3c30643533336535613731366561343365666666376365363263613636393466373e5d3e3e0a2569546578742d352e352e340a7374617274787265660a3339313936380a2525454f460a0d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3139313639313537323431313437380d0a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174613b206e616d653d226477436f6c6f72220d0a0d0a310d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3139313639313537323431313437380d0a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174613b206e616d653d22647750617065724964220d0a0d0a390d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3139313639313537323431313437380d0a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174613b206e616d653d2264774475706c6578220d0a0d0a310d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3139313639313537323431313437380d0a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174613b206e616d653d226477436f70696573220d0a0d0a310d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3139313639313537323431313437380d0a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174613b206e616d653d224261636b55524c220d0a0d0a687474703a2f2f706d732e73757374632e6564752e636e2f636c69656e742f6e65772f637072696e7450632f7072696e74446f632e68746d6c3f743d313537313135303539303836330d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3139313639313537323431313437382d2d0d0a' auth_check = '00005e00010100e04c68054d08004500021f0c65400080060000ac1052a7ac12018dc00300502f9f7e2260b6e86550180401ae680000504f5354202f6170692f636c69656e742f417574682f436865636b20485454502f312e310d0a486f73743a20706d732e73757374632e6564752e636e0d0a557365722d4167656e743a204d6f7a696c6c612f352e30202857696e646f7773204e542031302e303b2057696e36343b207836343b2072763a36392e3029204765636b6f2f32303130303130312046697265666f782f36392e300d0a4163636570743a202a2f2a0d0a4163636570742d4c616e67756167653a207a682d434e2c7a683b713d302e382c7a682d54573b713d302e372c7a682d484b3b713d302e352c656e2d55533b713d302e332c656e3b713d302e320d0a4163636570742d456e636f64696e673a20677a69702c206465666c6174650d0a582d5265717565737465642d576974683a20584d4c48747470526571756573740d0a436f6e6e656374696f6e3a206b6565702d616c6976650d0a526566657265723a20687474703a2f2f706d732e73757374632e6564752e636e2f636c69656e742f6e65772f637072696e7450632f7072696e74446f632e68746d6c0d0a436f6f6b69653a204f53455353494f4e49443d61636536656132303934303434363133393864333266323338656636653234390d0a43616368652d436f6e74726f6c3a206d61782d6167653d300d0a436f6e74656e742d4c656e6774683a20300d0a0d0a' print_job = '00005e00010100e04c68054d0800450002100c66400080060000ac1052a7ac12018dc00100502344fd6db677a1a150182011ae590000474554202f6170692f636c69656e742f5072696e744a6f622f4765743f74696d657374616d703d302e3634393230363137313836343338373620485454502f312e310d0a486f73743a20706d732e73757374632e6564752e636e0d0a557365722d4167656e743a204d6f7a696c6c612f352e30202857696e646f7773204e542031302e303b2057696e36343b207836343b2072763a36392e3029204765636b6f2f32303130303130312046697265666f782f36392e300d0a4163636570743a202a2f2a0d0a4163636570742d4c616e67756167653a207a682d434e2c7a683b713d302e382c7a682d54573b713d302e372c7a682d484b3b713d302e352c656e2d55533b713d302e332c656e3b713d302e320d0a4163636570742d456e636f64696e673a20677a69702c206465666c6174650d0a582d5265717565737465642d576974683a20584d4c48747470526571756573740d0a436f6e6e656374696f6e3a206b6565702d616c6976650d0a526566657265723a20687474703a2f2f706d732e73757374632e6564752e636e2f636c69656e742f6e65772f637072696e7450632f7072696e74446f632e68746d6c0d0a436f6f6b69653a204f53455353494f4e49443d61636536656132303934303434363133393864333266323338656636653234390d0a0d0a' if __name__ == "__main__": try: sock = rdt.socket(rdt.AF_INET, rdt.SOCK_STREAM) sock.connect(('172.18.1.141', 80)) sock.send(bytes.fromhex(auth_check)) data_recv = sock.recv(10000) print(data_recv) sock.send(bytes.fromhex(print_job)) data_recv = sock.recv(10000) print(data_recv) except KeyboardInterrupt: exit()
from rdt import socket if __name__ == "__main__": try: server_socket = socket() server_socket.bind(('127.0.0.1', 63000)) server_socket.accpet() while True: data = server_socket.recv() print("receive", data) server_socket.send(data) except KeyboardInterrupt: pass
from rdt import socket if __name__ == "__main__": client_socket = socket() client_socket.bind(('', 12345)) client_socket.connect(('127.0.0.1', 63000)) ################# # Original Test # ################# # MESSAGE = "TEST_MESSAGE_中文_TEST_MESSAGE" # client_socket.send(MESSAGE) # data = client_socket.recv() # assert data == MESSAGE ######################### # Manually sending test # ######################### while True: MESSAGE = input('input:') client_socket.send(MESSAGE) data = client_socket.recv() print("server:", data) ################### # large text test # ################### # fp = open('C:\\Users\\ASUS\\desktop\\alice.txt', 'r') # MESSAGE = fp.read() # fp.close() # client_socket.send(MESSAGE)
dns_answer.handle(foreign_name_server_address) # 保存记录 elif self.QR == 1: for answer in self.RRs.values(): rr = RR(name=answer.NAME, a_type=answer.TYPE, a_class=answer.CLASS, data=answer.DATA, due_date=time.time() + answer.A_ttl, name_original=answer.NAME_Original) for old_rr in cache: if old_rr.NAME_Original == rr.NAME_Original and rr.DATA == old_rr.DATA: cache.remove(old_rr) # 将冲突记录删除 cache.append(rr) def __str__(self): return str(self.__dict__) if __name__ == "__main__": cache = [] try: severSocket = rdt.socket(rdt.AF_INET, rdt.SOCK_DGRAM) clientSocket = rdt.socket(rdt.AF_INET, rdt.SOCK_DGRAM) severSocket.bind(('127.0.0.1', 53)) # 监听端口53 while True: message, clientAddress = severSocket.recvfrom(2048) dns_solve = dnsSolve(message.hex()) dns_solve.handle(clientAddress) except KeyboardInterrupt: exit()