【发布时间】:2011-07-14 03:12:09
【问题描述】:
我想更改 JVM 在 HttpURLConnections 中解析域名的方式。
我想编写自己的代码来解析域名,而不是通过默认的 TCP/IP 堆栈访问 DNS 服务器。
有没有办法替代默认的名称解析机制?
【问题讨论】:
-
DNS 将主机名替换为 IP 地址,最简单的做法是自己将主机名替换为 IP 地址。
我想更改 JVM 在 HttpURLConnections 中解析域名的方式。
我想编写自己的代码来解析域名,而不是通过默认的 TCP/IP 堆栈访问 DNS 服务器。
有没有办法替代默认的名称解析机制?
【问题讨论】:
构造 URL 用数字 IP 地址替换主机名,然后手动将 Host 标头添加到 HttpUrlConnection。
http://www.myserver.com/foo.html
相当于
http://192.168.1.100/foo.html
Host: www.myserver.com
dnsjava 让您可以通过标准 Java API 更好地控制解析 DNS 名称。
【讨论】:
我不知道它是否会起作用,但有系统属性
System.setProperty("sun.net.spi.nameservice.nameservers", localhost); System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");
也许如果您让您的 java 应用程序在 dns 端口 (53) 上打开一个端口并自己处理请求。
当然,如果当前机器上已经有 dns 服务器,这会失败。
【讨论】: