北邮网工大三计算机网络课程设计DNS


北邮网工大三计算机网络课程设计DNS 完美实现了课设要求
资源截图
代码片段和文件信息
#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我的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个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)