




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——北郵計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)DNS服務(wù)器
北郵計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)DNS服務(wù)器1環(huán)境
操作系統(tǒng)隨意,語言python2.72.文件
Socket.py說明完成緩存檢測,確定是回應(yīng),還是轉(zhuǎn)發(fā),假使是回應(yīng),確定是本地回應(yīng)還是外部應(yīng)答轉(zhuǎn)發(fā)
importsocketimportmydicimportcharhandleimportmakeframe
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAMport=53
the_dic=mydic.get_web_ip(client_request={}client_request_index={}reverse_map={}key_record=0client_wait=[]s.bind(('',port
time_rest=0request_general=''print'running'whileTrue:try:
msg,(client,port=s.recvfrom(1024except:print'Timeout!'continuerequest=[]request=list(msg
requre_web=charhandle.get_request(request[12:]website=''.join(requre_webif(port==53:answer=[]answer=list(msg
print\print\
response_ip=msg[-4]+msg[-3]+msg[-2]+msg[-1]
char_ip=socket.inet_ntoa(response_ipprintwebsite+'hastheip:'+char_ipfre=mydic.storeForUpdate(website,char_ipprint'withthefrequenceof'+str(fre
###real_request=client_request[request[0]+request[1]]foreach_clientinclient_wait:
my_key=client_request[request[0]+request[1]+str(each_client]ifclient_request_index.get(my_key!=None:
s.sendto(msg,client_request_index[my_key]print\printclient_request_index[my_key]breakelse:
print\print\print(client,port
###requre_web=charhandle.get_request(request[12:]###website=''.join(requre_webprint\
if(the_dic.get(website!=None:print\re_ip=the_dic.get(websiteprintre_ip
fre=mydic.storeForUpdate(websiteprintre_ip[0]+'withfrequence'+str(frezhen=makeframe.make(re_ip[0],msgs.sendto(zhen,(client,portelse:
print\key_record=key_record+1request_general=key_record
client_request[request[0]+request[1]+str(client]=request_generalclient_request_index[request_general]=(client,portifclientnotinclient_wait:client_wait.append(client
#selectauthorityDNSserverasyouwishs.sendto(msg,('',53time_rest=time_rest+1
try:
if(time_rest==50:print'payattention'
print'######################'mydic.updateCache(
print'######################'the_dic=mydic.get_web_ip(time_rest=0except:
print'notvalidfrequence'print''s.close(
Mydic.py完成本地查詢,LRU算法維護(hù)本地緩存,socket.py第97行的time_request值可以確定更新緩存的頻率,可以直接輸出在dnsrelay.txt內(nèi),但是為了便利觀測變化,我輸出到了dnsrelaycopy.txt里面,運(yùn)行一段時(shí)間之后,可以去看看學(xué)習(xí)到的新條目
importpickleimportosimportthreadingA=[]
d_web_ip={}d_ip_web={}update_dic={}data=open('dnsrelay.txt'foreach_lineindata:try:
(ip,sitecopy=each_line.split('',1(site,nothing=str(sitecopy.split('\\n',1d_web_ip[site]=[ip,1]d_ip_web[ip]=siteexcept:print'fileerror'data.close(try:
withopen('newdnsrelay.pickle','wb'asnewdnsrelay_file:pickle.dump(d_web_ip,newdnsrelay_fileexceptIOErroraserr:print'Fileerror:'+str(errexceptpickle.PickleErrorasperr:
print'Picklingerror:'+str(perrdefget_web_ip(:
withopen('newdnsrelay.pickle','rb'asf:globalupdate_dicupdate_dic=pickle.load(freturnupdate_dic.copy(return(None
defstoreForUpdate(web_site,add=None:globalupdate_dic
if(update_dic.get(web_site!=None:add_frequen=update_dic[web_site]add_frequen[1]=add_frequen[1]+1
printweb_site+'frequenceincrase1,withip'+add_frequen[0]returnadd_frequen[1]else:
update_dic[web_site]=[add,1]print'recordforanewsite'return1
defupdateCache(:globalupdate_dic
m=update_dic.copy(
t=threading.Thread(target=my_thread,kwargs=mprint'readytoupdatelocalcache'
t.start(t.join(
defmy_thread(*argu,**arg:frequence=[]remain_dic={}foreach_keyinarg:tmp=arg[each_key]if(tmp[1]notinfrequence:frequence.append(tmp[1]if(tmp[0]=='0.0.0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《岳陽樓記》解析
- 倉庫保管租賃合同范例
- 公司員工兼職合同范例
- 農(nóng)村村民房屋出售合同范例
- 湘潭大學(xué)專利管理辦法
- 東明石化合同范例
- ktv個(gè)人股轉(zhuǎn)讓合同范例
- 個(gè)人房屋售房合同范例
- 代購銷售合同范例
- 企業(yè)非用工合同范例
- 2024-2025學(xué)年第二學(xué)期天域全國名校協(xié)作體高三3月聯(lián)考 地理試卷(含答案)
- 學(xué)校2025年每日兩小時(shí)體育活動方案-陽光體育活力四溢
- B超的基本知識
- 錘擊式PHC預(yù)應(yīng)力混凝土管樁貫入度的控制
- 2025年廣西旅發(fā)置業(yè)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 敘事醫(yī)學(xué)培訓(xùn)課件
- 《勞動紀(jì)律》課件
- 小學(xué)數(shù)學(xué)一年級上冊數(shù)與代數(shù)
- 失能老年人健康管理模式研究進(jìn)展
- 5G優(yōu)化案例:5G波束配置優(yōu)化提升CQI優(yōu)良比案例
評論
0/150
提交評論