• 大小: 21.34MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-06
  • 语言: 其他
  • 标签: 北邮  网络工程  

资源简介

北邮网工大三计算机网络课程设计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  我的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\link.command.1.tlog
     文件        2306  2013-04-20 22:49  我的DNS\我的DNS\Debug\link.read.1.tlog
     文件         378  2013-04-20 22:49  我的DNS\我的DNS\Debug\link.write.1.tlog
     文件         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个文件信息

评论

共有 条评论