资源简介
北邮网工大三计算机网络课程设计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\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个文件信息
相关资源
- 网络工程师历年试题分析与解答.pdf
- [BUPT]创新创业实践课程完整源代码
- web搜索 pdf 郭军 北邮 电子书
- 北邮计算计组成原理课件
- 网络工程原理与实践教程(第3版)
- 计算机网络工程实践教程.基于华为路
- 2004-2019软考中级网络工程师真题含答
- 湘潭大学xtu网络工程与管理考试复习
- 北京邮电大学数字逻辑历年期末考试
- 北邮官方《数字逻辑与数字系统》 期
- 移动通信原理与系统-第二版
- 思科模拟软件-汉化版
- 北邮计算机803考研真题2016-2018及答案
- 软考网络工程师历年真题2009-2019上半
- 北邮-现代密码学下
- 网络工程设计教程 系统集成方法 第
- 网络工程师第五版
- 网络工程师教程 第五版PDF 完整版
- 网络工程师软考真题
- 网络工程师2009年到2017年历年真题试题
- 网络工程师考试辅导(2009版)李磊编
- H3CSE题库2018-V7
- 2004-2018软考中级网络工程师真题含答
- 2019北邮计算机803考研复试指导
- 通信原理高清—北邮—周炯槃老师
- 北邮《概率论与随机过程》官方课件
- 计算机四级网络工程师 《网络工程师
- Network Warrior中文版 思科网络工程师必
- 北邮图形学三次作业+最终论文和ppt
- 数据链路层协议设计[BUPT]计算机网络
评论
共有 条评论