-
大小: 21.34MB文件類型: .zip金幣: 1下載: 0 次發(fā)布日期: 2023-07-06
- 語言: 其他
- 標(biāo)簽: 北郵??網(wǎng)絡(luò)工程??
資源簡介
北郵網(wǎng)工大三計算機網(wǎng)絡(luò)課程設(shè)計DNS
完美實現(xiàn)了課設(shè)要求
代碼片段和文件信息
#include?
#include?
#include??
#include??
#include??
#include?
#include?
#include?
#include?
#include
using?namespace?std;
#pragma??comment(lib?“Ws2_32.lib“)?
#define?FORIEGN_DNS_ADDRESS?“202.106.0.20“ //外部DNS服務(wù)器地址
#define?LOCAL_DNS_ADDRESS?“??“ //本機實際IP地址
#define?DNS_PORT?53 //進行DNS服務(wù)的53端口
#define?BUF_SIZE?512
#define?LENGTH?1024
#define?AMOUNT?300
#define?NOTFOUND?-1
//DNS報文首部
typedef?struct?DNSHeader
{
????unsigned?short?ID;
????unsigned?short?Flags;
????unsigned?short?QuestNum;
????unsigned?short?AnswerNum;
????unsigned?short?AuthorNum;
????unsigned?short?AdditionNum;
}?Header;
//DNS域名解析表結(jié)構(gòu)
typedef?struct?analyse
{
string?IP; //IP地址
string?domain; //域名
}?Analyse;
typedef?struct?hash
{
string?IP;
string?domain;
int?flag;
}Hash;
//ID轉(zhuǎn)換表結(jié)構(gòu)
typedef?struct?IDChange
{
unsigned?short?oldID; //原有ID
BOOL?done; //標(biāo)記是否完成解析
SOCKADDR_IN?client; //請求者套接字地址
string?domainname;
}?IDtransform;
vector?DNS_table;
vector?Hash_table;
vector?HHRT;
int?IDcount?=?0; //轉(zhuǎn)換表中的條目個數(shù)
char?url[LENGTH]; //域名
SYSTEMTIME?sys;?????????????????????//系統(tǒng)時間
int?Day?Hour?Minute?Second?Milliseconds;//保存系統(tǒng)時間的變量
//函數(shù):獲取域名解析表
int?GetTable(string?tablePath)
{
ifstream?infile(tablePath?ios::in); //以讀入方式打開文本文件
if(!?infile)?{
cerr?<“打開“?< exit(1);
}
Analyse?temp;
//每次從文件中讀入一行,直至讀到文件結(jié)束符為止
while(?!infile.eof()?)
{
string?ip?domain;
infile?>>?ip?>>?domain;
if(ip?!=?““?&&?domain?!=?““)
{
temp.IP?=?ip;
temp.domain?=?domain;
DNS_table.push_back(temp);
}
}
// for(int?i?=?0;?i?// cout< infile.close(); //關(guān)閉文件
cout?<“讀取記錄文件成功!“?<
return?DNS_table.size(); //返回域名解析表中條目個數(shù)
}
//函數(shù):建立哈希表
void?GetHashTable()
{
int?hashLen?=?DNS_table.size();
Hash?temp;
temp.domain?=?““;
temp.IP?=?““;
temp.flag?=?0;
Hash_table.insert(Hash_table.begin()?hashLen*2?temp);
int?adr;
for(int?i?=?0;?i? {
int?key?=?0;
for(int?j?=?0;?j? key?+=?DNS_table[i].domain[j];
adr??=?key?%?(hashLen*2);
if(Hash_table[adr].domain?==?““)
{
Hash_table[adr].domain?=?DNS_table[i].domain;
Hash_table[adr].IP?=?DNS_table[i].IP;
Hash_table[adr].flag?=?1;
}
else//沖突
{
while(Hash_table[adr].flag?!=?0)
{
adr?=?(adr?+?1)?%?(hashLen*2);
}
Hash_table[adr].domain?=?DNS_table[i].domain;
Hash_table[adr].IP?=?DNS_table[i].IP;
Hash_table[adr].flag?=?1;
}
}
}
//函數(shù):獲取DNS請求中的域名
void?GetUrl(char?*recvbuf?int?recvnum)//字符串、字符串長度
{
char?urlname[LENGTH];
int?i?=?0?j?k?=?0;
memset(url?0?LENGTH);
memcpy(urlname?&(recvbuf[sizeof(Header)])?recvnum-16); //獲取請求報文中的域名表示
int?len?=?strlen(urlname
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-05-20?15:40??我的DNS\
?????目錄???????????0??2013-05-20?15:18??我的DNS\Debug\
?????文件??????141824??2013-04-20?22:49??我的DNS\Debug\我的DNS.exe
?????文件??????776112??2013-04-20?22:49??我的DNS\Debug\我的DNS.ilk
?????目錄???????????0??2013-05-20?15:40??我的DNS\Release\
?????文件???????39936??2013-05-20?15:40??我的DNS\Release\我的DNS.exe
?????文件??????683008??2013-05-20?15:40??我的DNS\Release\我的DNS.pdb
?????目錄???????????0??2013-05-09?18:23??我的DNS\ipch\
?????目錄???????????0??2013-05-09?18:23??我的DNS\ipch\我的dns-7cc4fab1\
?????文件????54984704??2013-05-09?18:23??我的DNS\ipch\我的dns-7cc4fab1\我的dns-3e5789c0.ipch
?????目錄???????????0??2013-05-20?15:41??我的DNS\我的DNS\
?????目錄???????????0??2013-04-20?22:49??我的DNS\我的DNS\Debug\
?????文件???????18086??2013-04-20?22:49??我的DNS\我的DNS\Debug\CL.read.1.tlog
?????文件?????????206??2013-04-20?22:49??我的DNS\我的DNS\Debug\CL.write.1.tlog
?????文件?????????500??2013-04-20?22:49??我的DNS\我的DNS\Debug\cl.command.1.tlog
?????文件??????490520??2013-04-20?22:49??我的DNS\我的DNS\Debug\dns.obj
?????文件????????1002??2013-04-20?22:49??我的DNS\我的DNS\Debug\li
?????文件????????2306??2013-04-20?22:49??我的DNS\我的DNS\Debug\li
?????文件?????????378??2013-04-20?22:49??我的DNS\我的DNS\Debug\li
?????文件?????????360??2013-04-20?22:49??我的DNS\我的DNS\Debug\mt.command.1.tlog
?????文件????????1080??2013-04-20?22:49??我的DNS\我的DNS\Debug\mt.read.1.tlog
?????文件?????????184??2013-04-20?22:49??我的DNS\我的DNS\Debug\mt.write.1.tlog
?????文件??????609280??2013-04-20?22:49??我的DNS\我的DNS\Debug\vc100.idb
?????文件??????380928??2013-04-20?22:49??我的DNS\我的DNS\Debug\vc100.pdb
?????文件?????????381??2013-04-20?22:49??我的DNS\我的DNS\Debug\我的DNS.exe.intermediate.manifest
?????文件??????????53??2013-04-20?22:49??我的DNS\我的DNS\Debug\我的DNS.lastbuildstate
?????文件????????3132??2013-04-20?22:49??我的DNS\我的DNS\Debug\我的DNS.log
?????目錄???????????0??2013-05-20?15:40??我的DNS\我的DNS\Release\
?????文件???????42594??2013-05-20?15:40??我的DNS\我的DNS\Release\CL.read.1.tlog
?????文件?????????456??2013-05-20?15:40??我的DNS\我的DNS\Release\CL.write.1.tlog
?????文件?????????978??2013-05-20?15:40??我的DNS\我的DNS\Release\cl.command.1.tlog
............此處省略25個文件信息
評論
共有 條評論