91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-02
  • 語言: 其他
  • 標簽: =??=??

資源簡介

是北京郵電大學,計算機網絡課程設計的一個實驗。可以參考。

資源截圖

代碼片段和文件信息

#include?
#include?
#include??
#include??
#include??
#include?
#include?
#include?
#include?
using?namespace?std;

#pragma??comment(lib?“Ws2_32.lib“)?

#define?DEF_DNS_ADDRESS?“192.168.146.2“ //外部DNS服務器地址
#define?LOCAL_ADDRESS?“127.0.0.1“ //本地DNS服務器地址
#define?DNS_PORT?53 //進行DNS服務的53端口
#define?BUF_SIZE?512
#define?LENGTH?65
#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;
}?DNSHDR?*pDNSHDR;

//DNS域名解析表結構
typedef?struct?translate
{
string?IP; //IP地址
string?domain; //域名
}?Translate;

//ID轉換表結構
typedef?struct?IDChange
{
unsigned?short?oldID; //原有ID
BOOL?done; //標記是否完成解析
SOCKADDR_IN?client; //請求者套接字地址
}?IDTransform;

Translate?DNS_table[AMOUNT]; //DNS域名解析表
IDTransform?IDTransTable[AMOUNT]; //ID轉換表
int?IDcount?=?0; //轉換表中的條目個數
char?url[LENGTH]; //域名
SYSTEMTIME?sys;?????????????????????//系統時間
int?Day?Hour?Minute?Second?Milliseconds;//保存系統時間的變量

//函數:獲取域名解析表
int?GetTable(char?*tablePath)
{
int?i=0?j?pos=0;
string?table[AMOUNT];

ifstream?infile(tablePath?ios::in); //以讀入方式打開文本文件

if(!?infile)?{
cerr?< exit(1);
}

//每次從文件中讀入一行,直至讀到文件結束符為止
while?(getline(infile?table[i])?&&?i? i++;

if?(i?==?AMOUNT-1)
cout?<
for?(j?=?0;?j? pos?=?table[j].find(‘?‘);
if?(pos?>?table[j].size())
cout?< else?{
DNS_table[j].IP?=?table[j].substr(0?pos);
DNS_table[j].domain?=?table[j].substr(pos+1);
}
}

infile.close(); //關閉文件
cout?<
return?i-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(DNSHDR)])?recvnum-16); //獲取請求報文中的域名表示

int?len?=?strlen(urlname);

//域名轉換
while?(i? if?(urlname[i]?>?0?&&?urlname[i]?<=?63)
for?(j?=?urlname[i]?i++;?j?>?0;?j--?i++?k++)
url[k]?=?urlname[i];

if?(urlname[i]?!=?0)?{
url[k]?=?‘.‘;
????k++;
}
}

url[k]?=?‘\0‘;
}

//函數:判斷是否在表中找到DNS請求中的域名,找到返回下標
int?IsFind(char*?url?int?num)
{
int?find?=?NOTFOUND;
char*?domain;

for?(int?i?=?0;?i? domain?=?(char?*)DNS_table[i].domain.c_str();
if?(strcmp(domain?url)?==?0)?{ //找到
find?=?i;
break;
}
}

return?find;
}

//函數:將請求ID轉換為新的ID,并將信息寫入ID轉換表中
unsigned?short?RegisterNewID?(unsigned?short?oID?SOCKADDR_IN?temp?BOOL?ifdone)
{
srand(time(NULL));
IDTransTable[IDcount].oldID?=?oID;
IDTransTable[IDcount].client?=?temp;

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????12138??2010-07-23?15:20??zhongji.cpp
?????文件????????5077??2010-07-12?00:57??zhongji.txt

評論

共有 條評論