1700479063
1700479064
protected abstract boolean isLocal(Recorder recorder);
1700479065
1700479066
//随机产生一个IP地址,工具类
1700479067
1700479068
private String genIpAddress(){
1700479069
1700479070
Random rand=new Random();
1700479071
1700479072
String address=rand.nextInt(255)+”.”+rand.nextInt(255)+”.”+
1700479073
1700479074
rand.nextInt(255)+”.”+rand.nextInt(255);
1700479075
1700479076
return address;
1700479077
1700479078
}
1700479079
1700479080
}
1700479081
1700479082
注意看一下responseFromUpperServer方法,它只允许设置一个观察者,因为一般的DNS服务器都只有一个上级DNS服务器。sign方法是签名,这个记录是由谁解析出来的,就由各个实现类独自来实现。三个DnsServer的实现类都比较简单,如代码清单32-38、32-39、32-40所示。
1700479083
1700479084
代码清单32-38 上海DNS服务器
1700479085
1700479086
public class SHDnsServer extends DnsServer{
1700479087
1700479088
@Override
1700479089
1700479090
protected void sign(Recorder recorder){
1700479091
1700479092
recorder.setOwner(“上海DNS服务器”);
1700479093
1700479094
}
1700479095
1700479096
//定义上海的DNS服务器能处理的级别
1700479097
1700479098
@Override
1700479099
1700479100
protected boolean isLocal(Recorder recorder){
1700479101
1700479102
return recorder.getDomain().endsWith(”.sh.cn”);
1700479103
1700479104
}
1700479105
1700479106
}
1700479107
1700479108
代码清单32-39 中国顶级DNS服务器
1700479109
1700479110
public class ChinaTopDnsServer extends DnsServer{
1700479111
1700479112
@Override
[
上一页 ]
[ :1.700479063e+09 ]
[
下一页 ]