北邮网工大三计算机网络课程设计DNS
完美实现了课设要求
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-05-20 15:40 我的DNS
目录 0 2013-05-20 15:18 我的DNSDebug
文件 141824 2013-04-20 22:49 我的DNSDebug我的DNS.exe
文件 776112 2013-04-20 22:49 我的DNSDebug我的DNS.ilk
目录 0 2013-05-20 15:40 我的DNSRelease
文件 39936 2013-05-20 15:40 我的DNSRelease我的DNS.exe
文件 683008 2013-05-20 15:40 我的DNSRelease我的DNS.pdb
目录 0 2013-05-09 18:23 我的DNSipch
目录 0 2013-05-09 18:23 我的DNSipch我的dns-7cc4fab1
文件 54984704 2013-05-09 18:23 我的DNSipch我的dns-7cc4fab1我的dns-3e5789c0.ipch
目录 0 2013-05-20 15:41 我的DNS我的DNS
目录 0 2013-04-20 22:49 我的DNS我的DNSDebug
文件 18086 2013-04-20 22:49 我的DNS我的DNSDebugCL.read.1.tlog
文件 206 2013-04-20 22:49 我的DNS我的DNSDebugCL.write.1.tlog
文件 500 2013-04-20 22:49 我的DNS我的DNSDebugcl.command.1.tlog
文件 490520 2013-04-20 22:49 我的DNS我的DNSDebugdns.obj
文件 1002 2013-04-20 22:49 我的DNS我的DNSDebuglink.command.1.tlog
文件 2306 2013-04-20 22:49 我的DNS我的DNSDebuglink.read.1.tlog
文件 378 2013-04-20 22:49 我的DNS我的DNSDebuglink.write.1.tlog
文件 360 2013-04-20 22:49 我的DNS我的DNSDebugmt.command.1.tlog
文件 1080 2013-04-20 22:49 我的DNS我的DNSDebugmt.read.1.tlog
文件 184 2013-04-20 22:49 我的DNS我的DNSDebugmt.write.1.tlog
文件 609280 2013-04-20 22:49 我的DNS我的DNSDebugvc100.idb
文件 380928 2013-04-20 22:49 我的DNS我的DNSDebugvc100.pdb
文件 381 2013-04-20 22:49 我的DNS我的DNSDebug我的DNS.exe.intermediate.manifest
文件 53 2013-04-20 22:49 我的DNS我的DNSDebug我的DNS.lastbuildstate
文件 3132 2013-04-20 22:49 我的DNS我的DNSDebug我的DNS.log
目录 0 2013-05-20 15:40 我的DNS我的DNSRelease
文件 42594 2013-05-20 15:40 我的DNS我的DNSReleaseCL.read.1.tlog
文件 456 2013-05-20 15:40 我的DNS我的DNSReleaseCL.write.1.tlog
文件 978 2013-05-20 15:40 我的DNS我的DNSReleasecl.command.1.tlog
............此处省略25个文件信息
#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服务器地址
#define LOCAL_DNS_ADDRESS “ “ //本机实际IP地址
#define DNS_PORT 53 //进行DNS服务的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域名解析表结构
typedef struct analyse
{
string IP; //IP地址
string domain; //域名
} Analyse;
typedef struct hash
{
string IP;
string domain;
int flag;
}Hash;
//ID转换表结构
typedef struct IDChange
{
unsigned short oldID; //原有ID
BOOL done; //标记是否完成解析
SOCKADDR_IN client; //请求者套接字地址
string domainname;
} IDtransform;
vector DNS_table;
vector Hash_table;
vector HHRT;
int IDcount = 0; //转换表中的条目个数
char url[LENGTH]; //域名
SYSTEMTIME sys; //系统时间
int Day Hour Minute Second Milliseconds;//保存系统时间的变量
//函数:获取域名解析表
int GetTable(string tablePath)
{
ifstream infile(tablePath ios::in); //以读入方式打开文本文件
if(! infile) {
cerr << “打开“ << tablePath << “错误!“ < exit(1);
}
Analyse temp;
//每次从文件中读入一行,直至读到文件结束符为止
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 < DNS_table.size(); i++)
// cout< infile.close(); //关闭文件
cout << “读取记录文件成功!“ << endl;
return DNS_table.size(); //返回域名解析表中条目个数
}
//函数:建立哈希表
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 < hashLen; i++)
{
int key = 0;
for(int j = 0; j < DNS_table[i].domain.length(); 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;
}
}
}
//函数:获取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 我的DNSDebug
文件 141824 2013-04-20 22:49 我的DNSDebug我的DNS.exe
文件 776112 2013-04-20 22:49 我的DNSDebug我的DNS.ilk
目录 0 2013-05-20 15:40 我的DNSRelease
文件 39936 2013-05-20 15:40 我的DNSRelease我的DNS.exe
文件 683008 2013-05-20 15:40 我的DNSRelease我的DNS.pdb
目录 0 2013-05-09 18:23 我的DNSipch
目录 0 2013-05-09 18:23 我的DNSipch我的dns-7cc4fab1
文件 54984704 2013-05-09 18:23 我的DNSipch我的dns-7cc4fab1我的dns-3e5789c0.ipch
目录 0 2013-05-20 15:41 我的DNS我的DNS
目录 0 2013-04-20 22:49 我的DNS我的DNSDebug
文件 18086 2013-04-20 22:49 我的DNS我的DNSDebugCL.read.1.tlog
文件 206 2013-04-20 22:49 我的DNS我的DNSDebugCL.write.1.tlog
文件 500 2013-04-20 22:49 我的DNS我的DNSDebugcl.command.1.tlog
文件 490520 2013-04-20 22:49 我的DNS我的DNSDebugdns.obj
文件 1002 2013-04-20 22:49 我的DNS我的DNSDebugli
文件 2306 2013-04-20 22:49 我的DNS我的DNSDebugli
文件 378 2013-04-20 22:49 我的DNS我的DNSDebugli
文件 360 2013-04-20 22:49 我的DNS我的DNSDebugmt.command.1.tlog
文件 1080 2013-04-20 22:49 我的DNS我的DNSDebugmt.read.1.tlog
文件 184 2013-04-20 22:49 我的DNS我的DNSDebugmt.write.1.tlog
文件 609280 2013-04-20 22:49 我的DNS我的DNSDebugvc100.idb
文件 380928 2013-04-20 22:49 我的DNS我的DNSDebugvc100.pdb
文件 381 2013-04-20 22:49 我的DNS我的DNSDebug我的DNS.exe.intermediate.manifest
文件 53 2013-04-20 22:49 我的DNS我的DNSDebug我的DNS.lastbuildstate
文件 3132 2013-04-20 22:49 我的DNS我的DNSDebug我的DNS.log
目录 0 2013-05-20 15:40 我的DNS我的DNSRelease
文件 42594 2013-05-20 15:40 我的DNS我的DNSReleaseCL.read.1.tlog
文件 456 2013-05-20 15:40 我的DNS我的DNSReleaseCL.write.1.tlog
文件 978 2013-05-20 15:40 我的DNS我的DNSReleasecl.command.1.tlog
............此处省略25个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)