「dns协议java」dns协议作用是什么
今天给各位分享dns协议java的知识,其中也会对dns协议作用是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
域名解析错误怎么办?
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
2、通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
1260
下一条回答
百度搜索排名多少钱 -选百度营销 足不出户也能爆单 点击了解
本月8749人已拨打电话咨询问题
百度搜索排名多少钱每天几十元就可以做,让【硬线索】主动上门,获客不再是难题,快速提高订单量,效果收费,智能之选,现在开户还有超值豪礼等你来拿!
百度营销广告
数字后端_零基础入门到精通
值得一看的数字后端相关信息推荐
E课网四大数字IC设计就业班,涵盖数字前端设计,数字验证,数字后端设计,DFT设计报名即签署协议,资深工程师全程带班监督,解疑答惑
爱思尔教育科技有限..广告
[淘宝]c语言基础_百万商品_天天低价_淘出乐趣
C/C++语言编程开发2022新版零基础入门到精项目实战网课视频教程
¥39.6 元
c++/vb/php/c#视频教程 visual basic/vc编程c语言零基础在线课程
¥60 元
官方正版 标准C语言基础教程 第四版 英文版 国外计算机科学教材系列 C语言编程 用C语言进行计算机经典教材 C++编程详解书
¥89 元
c++视频教程 C/VC/C++语言编程开发程序项目实战MFC自学实战教学
¥29.8 元
c++视频教程 C/VC/C++语言编程开发程序项目实战MFC自学实战教学
¥29.8 元
simba.taobao.com广告
2条评论
评论,是对回答者的感谢
发布
百度网友c679f69969
36
怎么找不到设备呢
2020-08-10 19:16
热心网友
25
哦
2021-05-04 22:41
为您推荐
免费javajava学些什么-一般学多久java?广告
免费java新手入门学Java-技术选动力节点-本地Java培训学校,13年Java教学经验;全国十
572022-06-05
紧急求救:浏览器(错误 105 (net::ERR_NAME_NOT_RESOLVED): 无法找到此服务器。)什么意思?怎么解决?
我是XP系统,曾遇到和楼主相同的问题。解决方法是:网络连接-本地连接-Internet协议(TCP
176 浏览305032017-11-23
错误105(net::ERR_NAME_NOT_RESOLVED):无法解析服务器的DNS地址
希望对你有帮助!你原来的路由器是设置好了的,所以能上网,新的路由器并不是买回来插上就能用的,要进行设
29 浏览4961
错误 105 (net::ERR_NAME_NOT_RESOLVED): 无法找到此服务器
网页显示问题(适用于 Windows): “无法访问此网页”(网络错误 2、102、104 和 10
17 浏览12418
百度营销一招让你快速恢复生意,订单接不停
值得一看的百度相关信息推荐
本月8749人已拨打电话咨询问题
咨询
百度营销广告
免费javajava学些什么-一般学多久java?
值得一看的java相关信息推荐
本月173人已咨询相关问题
咨询
动力节点广告
正在加载
编程,DNS的格式用java怎么写?
小孩儿你是没学逻辑运算那章节吗? || 这种。 byte test=0; test || 0x0f test=00001111
Java网络编程从入门到精通(4):DNS缓存
在通过DNS查找域名的过程中 可能会经过多台中间DNS服务器才能找到指定的域名 因此 在DNS服务器上查找域名是非常昂贵的操作 在Java中为了缓解这个问题 提供了DNS缓存 当InetAddress类第一次使用某个域名(如)创建InetAddress对象后 JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中 当下一次InetAddress类再使用这个域名时 就直接从DNS缓存里获得所需的信息 而无需再访问DNS服务器
DNS缓存在默认时将永远保留曾经访问过的域名信息 但我们可以修改这个默认值 一般有两种方法可以修改这个默认值
在程序中通过java security Security setProperty方法设置安全属性nel的值(单位 秒) 如下面的代码将缓存超时设为 秒
java security Security setProperty( nel );
设置java security文件中的neorkaddresl属性 假设JDK的安装目录是C \jdk 那么java security文件位于c \jdk \jre\lib\security目录中 打开这个文件 找到nel属性 并将这个属性值设为相应的缓存超时(单位 秒)
如果将nel属性值设为 那么DNS缓存数据将永远不会释放 下面的代码演示了使用和不使用DNS缓存所产生效果
package mynet;import *;public class MyDNS{ public static void main(String[] args) throws Exception { // args[ ]: 本机名 args[ ] 缓冲时间 if (args length ) return; java security Security setProperty( nel args[ ]); long time = System currentTimeMillis(); InetAddress addresses [] = InetAddress getAllByName(args[ ]); System out println( addresses : + String valueOf(System currentTimeMillis() time) + 毫秒 ); for (InetAddress address : addresses ) System out println(address); System out print( 按任意键继续 ); System in read(); time = System currentTimeMillis(); InetAddress addresses [] = InetAddress getAllByName(args[ ]); System out println( addresses : + String valueOf(System currentTimeMillis() time) + 毫秒 ); for (InetAddress address : addresses ) System out println(address); }}
在上面的代码中设置了DNS缓存超时(通过args[ ]参数) 用户可以通过命令行参数将这个值传入MyDNS中 这个程序首先使用getAllByName建立一个InetAddress数组 然后通过System in read使程序暂停 当用户等待一段时间后 可以按任意键继续 并使用同一个域名(args[ ])再建立一个InetAddress数组 如果用户等待的这段时间比DNS缓存超时小 那么无论情况如何变化 addresses 和addresses 数组中的元素是一样的 并且创建addresses 数组所花费的时间一般为 毫秒(小于 毫秒后 Java无法获得更精确的时间)
测试
执行如下命令(将DNS缓存超时设为 秒)
java mynet MyDNS
运行结果 (在 秒之内按任意键)
addresses : 毫秒/ 按任意键继续addresses : 毫秒/
运行结果 (在 秒后按任意键)
addresses : 毫秒/ 按任意键继续addresses : 毫秒/
在上面的测试中可能出现两个运行结果 如果在出现 按任意键继续… 后 在 秒之内按任意键继续后 就会得到运行结果 从这个结果可以看出 addresses 所用的时间为 毫秒 也就是说 addresses 并未真正访问DNS服务器 而是直接从内存中的DNS缓存得到的数据 当在 秒后按任意键继续后 就会得到运行结果 这时 内存中的DNS缓存中的数据已经释放 所以addresses 还得再访问DNS服务器 因此 addresses 的时间是 毫秒(addresses 和addresses 后面的毫秒数可能在不同的环境下的值不一样 但一般情况下 运行结果 的addresses 的值为 或是一个接近 的数 如 运行结果 的addresses 的值一般会和addresses 的值很接近 或是一个远比 大的数 如 )
测试
执行如下命令(ComputerName为本机的计算机名 DNS缓存超时设为永不过期[ ])
java mynet MyDNS ComputerName
运行结果(按任意键继续之前 将 删除)
addresses : 毫秒myuniverse/ myuniverse/ 按任意键继续addresses : 毫秒myuniverse/ myuniverse/
从上面的测试可以看出 将DNS缓存设为永不过期后 无论过多少时间 按任意键后 addresses 任然得到了两个IP地址( 和 ) 而且addresses 的时间是 毫秒 但在这时 已经被删除 因此可以判断 addresses 是从DNS缓存中得到的数据 如果运行如下的命令 并在 秒后按任意键继续后 addresses 就会只剩下一个IP地址( )
java mynet MyDNS ComputerName
如果域名在DNS服务器上不存在 那么客户端在进行一段时间的尝试后(平均为 秒) 就会抛出一个UnknownHostException异常 为了让下一次访问这个域名时不再等待 DNS缓存将这个错误信息也保存了起来 也就是说 只有第一次访问错误域名时才进行 称左右的尝试 以后再访问这个域名时将直接抛出UnknownHostException异常 而无需再等待 秒钟
访问域名失败的原因可能是这个域名真的不存在 也可能是因为DNS服务器或是其他的硬件或软件的临时故障 因此 一般不能将这个域名错误信息一直保留 在Java中可以通过neorkaddresl属性设置保留这些信息的时间 这个属性的默认值是 秒 它也可以通过java security Security setProperty方法或java security文件来设置 下面的代码演示了neorkaddresl属性的用法
package mynet;import *;public class MyDNS { public static void main(String[] args) throws Exception { java security Security setProperty( neorkaddresl ); long time = ; try { time = System currentTimeMillis(); InetAddress getByName( ); } catch (Exception e) { System out println( 不存在! address : + String valueOf(System currentTimeMillis() time) + 毫秒 ); } //Thread sleep( ); // 延迟 秒 try { time = System currentTimeMillis(); InetAddress getByName( ); } catch (Exception e) { System out println( 不存在! address : + String valueOf(System currentTimeMillis() time) + 毫秒 ); } }}
在上面的代码中将neorkaddresl属性值设为 秒 这个程序分别测试了address 和address 访问(这是个不存在的域名 读者可以将其换成任何不存在的域名)后 用了多长时间抛出UnknownHostException异常
运行结果
不存在! address : 毫秒不存在! address : 毫秒
我们从上面的运行结果可以看出 address 使用了 毫秒就抛出了异常 因此 可以断定address 是从DNS缓存里获得了域名不可访问的信息 所以就直接抛出了UnknowHostException异常 如果将上面代码中的延迟代码的注释去掉 那么可能得到如下的运行结果
不存在! address : 毫秒不存在! address : 毫秒
从上面的运行结果可以看出 在第 秒时 DNS缓存中的数据已经被释放 因此 address 仍需要访问DNS服务器才能知道是不可访问的域名
在使用DNS缓存时有两点需要注意
可以根据实际情况来设置nel属性的值 一般将这个属性的值设为 但如果访问的是动态映射的域名(如使用动态域名服务将域名映射成ADSL的动态IP) 就可能产生IP地址变化后 客户端得到的还是原来的IP地址的情况
lishixinzhi/Article/program/Java/hx/201311/11147
DNS是什么?java
DNS是指:域名服务器(Domain Name Server)。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
如何在java中配置主副DNS?
这段代码在我机器上是好用的。
Runtime.getRuntime().exec();会开新线程的,可能有多线程的冲突吧,像这样一次全写进去应该没什么问题,另外我的机器是vista,所以是ipv4,你自己改改吧。
我只把你if那个块里面的东西改了,其它的一样
-----------------------
if (n == "C201") {
try {
//先开一个线程运行本地的Netsh
Process p = Runtime.getRuntime().exec("Netsh");
//得到这个线程的输入输出流,输入流就相当于你的cmd窗口
//输出流就相当于你的键盘。(这里别看反了)
BufferedOutputStream w = new BufferedOutputStream(p.getOutputStream());
final BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
//这个线程是为了看netsh的输出,主要是测试时候用
//实际不用管也可以
Thread t = new Thread() {
public void run() {
try {
String line;
while ((line = r.readLine()) != null) {
System.out.println(line);
}
r.close();
} catch (Exception e) {
}
}
};
t.start();
// 向输入流里面写数据,这个就相当于
// 你先在cmd里面敲了netsh回车之后
// 接着敲的命令。先选ip协议
w.write("interface ipv4\r\n".getBytes());
//设置地址,这个和你的是一样的啊...
w.write("set address \"Local Area Connection 2\" static 172.26.104.1 255.255.255.0 172.26.104.254 1\r\n".getBytes());
//再设dns
w.write("set dns name=\"Local Area Connection 2\" static addr=10.6.6.6 register=PRIMARY\r\n".getBytes());
//第二个dns
w.write("add dns name=\"Local Area Connection 2\" addr=202.96.128.86 index=2\r\n".getBytes());
//把输出缓存里的东西写进输出流
w.flush();
//退出netsh
w.write("quit\r\n".getBytes());
w.flush();
w.close();
} catch (IOException e) {
e.printStackTrace();
}
}
-------------------------
我解释的够详细了吧.....
dns协议java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于dns协议作用是什么、dns协议java的信息别忘了在本站进行查找喔。