文档详情

北邮计算机网络课程设计DNS服务器.doc

发布:2017-02-20约5.15万字共8页下载文档
文本预览下载声明
北邮计算机网络课程设计DNS服务器 1 环境 操作系统随意,语言python2.7 文件 Socket.py 说明 完成缓存检测,确定是回应,还是转发,如果是回应,确定是本地回应还是外部应答转发 import socket import mydic import charhandle import makeframe s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) port = 53 the_dic = mydic.get_web_ip() client_request = {} client_request_index = {} reverse_map = {} key_record = 0 client_wait = [] s.bind((,port)) time_rest = 0 request_general = print running while True: try: msg , (client,port) = s.recvfrom(1024) except: print Time out! continue request = [] request = list(msg) requre_web = charhandle.get_request(request[12:]) website = .join(requre_web) if(port == 53): answer = [] answer = list(msg) print Type:Remote Response print remote answer is: response_ip = msg[-4]+msg[-3]+msg[-2]+msg[-1] char_ip = socket.inet_ntoa(response_ip) print website + has the ip : +char_ip fre = mydic.storeForUpdate(website,char_ip ) print with the frequence of + str(fre) ###real_request = client_request[request[0]+request[1]] for each_client in client_wait: my_key = client_request[request[0]+request[1]+str(each_client)] if client_request_index.get(my_key) != None : s.sendto(msg,client_request_index[my_key]) print Response to ip and Client port: print client_request_index[my_key] break else: print Type: Client Request print ip and port: print (client,port) ### requre_web = charhandle.get_request(request[12:]) ### website = .join(requre_web) print Request website:+website if(the_dic.get(website) != None): print Found in local cache: re_ip = the_dic.get(website) print re_ip fre = mydic.storeForUpdate(website)
显示全部
相似文档