C++模拟了DNS分布式查询中的迭代查询与递归查询
新建了两个类用来模拟Client,Server,socket结构体用来模拟链路。
没有做历史节点记录,每次找下一个节点都靠随机数。这里有待改进。
代码如下
#include <iostream>
using namespace std;
struct socket//用来模拟线路
{
bool flag= false;//记录是否找到域名对应ip
string name;//域名
string ip;//IP
string source;//链路起点
string desnation;//链路终点
};
class Client
{
private:
string want_name;//客户端申请的域名
string user_ip="127.0.0.1";//客户端ip
string des_ip;//客户端请求域名的ip
public:
Client(){};
~Client(){};
Client(string ip){des_ip=ip;}
int respose(socket wire);//应答函数
socket send();//发报函数
void input();//输入请求域名
};
void Client::input() {
cout<<"客户端输入:"<<endl;
cin>>want_name;
}
int Client::respose(socket wire) {
if (wire.flag==false)//若尚未找到域名,将链路的ip替换为目标ip
{
des_ip=wire.ip;
return 0;
}
else//找到域名,直接打印
{
cout<<"域名:"<<wire.name<<endl;
cout<<"IP:"<<wire.ip<<endl;
return 1;
}
}
//发报&#