未解决的套接字地址

时间:2013-02-02 20:17:47

标签: java network-programming

这更像是一个新手问题,但我无法得到我在Google上寻找的答案类型。

我正在阅读java.net包中的InetSocketAddress类,我遇到了名为createUnresolved(String host, int port)的方法。此方法会创建未解析的套接字。

基本上我们的意思是什么未解决?在编写程序时我经常遇到这个术语,但从来没有完全理解它。任何人都可以解释java中的一般含义,以及上述方法的上下文含义。

感谢。

2 个答案:

答案 0 :(得分:0)

我发现了in a sun-blog

  

但决定保持原样,但使用createUnresolved()来创建   InetSocketAddress,以便我们知道用于实例化它的内容。如果   用户打开IP地址开始,我们将无法处理它。   (我认为之前无法区分)令牌会有什么   用户在开头使用(IP或名称),如果使用名称,   即使使用addr更改,令牌缓存的密钥也不会改变。所以   委托令牌应继续有效。

基本上,它是一个半生不熟的InetSocketAddress - 所以它不是最后的迭代。这是一个中介步骤..

来自API:

  

它也可以是一对(主机名+端口号),在这种情况下是一个   将尝试解析主机名。

     

如果解决方案失败,则说该地址未解决但可以   仍然可以在某些情况下使用,例如通过代理连接

所以我们没有找到主机名或用户友好的“www.abc.com”方法。

但是如果我们通过代理进行连接就没问题,因为代理服务器会处理主机名。

答案 1 :(得分:0)

我遇到了同样的异常:java.net.UnknownHostException:主机未解析:https://www.google.com

问题是因为我添加了协议https://,我在删除https后解决了问题://

try {
    Socket socket = new Socket();
    socket.connect(new InetSocketAddress("www.google.com", 443), 100);
    socket.close();
    return true;
} catch (IOException e) {
    e.printStackTrace();
    return false;
}