打字猴:1.700479036e+09
1700479036 //作为被观察者,允许增加观察者,这里上级DNS一般只有一个
1700479037
1700479038 public void setUpperServer(DnsServer dnsServer){
1700479039
1700479040 //先清空,然后再增加
1700479041
1700479042 super.deleteObservers();
1700479043
1700479044 super.addObserver(dnsServer);
1700479045
1700479046 }
1700479047
1700479048 //向父DNS请求解析,也就是通知观察者
1700479049
1700479050 private void responsFromUpperServer(Recorder recorder){
1700479051
1700479052 super.setChanged();
1700479053
1700479054 super.notifyObservers(recorder);
1700479055
1700479056 }
1700479057
1700479058 //每个DNS服务器签上自己的名字
1700479059
1700479060 protected abstract void sign(Recorder recorder);
1700479061
1700479062 //每个DNS服务器都必须定义自己的处理级别
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
[ 上一页 ]  [ :1.700479036e+09 ]  [ 下一页 ]