2012-04-26 68 views
1

我想,当一个例外在我的Android程序中出现,在我的套接字的异常块打印的东西。为什么“78.137.18”不作为无效的IP地址被拒绝?

但是,即使我举一个无效的IP地址,我的异常不会被调用。

 try{ 
     SocketAddress socketAddress = new InetSocketAddress("78.137.18" , 8364); 
     } 
     catch (Exception e) 
     { 
     System.out.println("ERROR"); 
     } 

回答

3

这实际上是一个有效的IP地址。

[email protected]:~$ perl -nle 'use Socket; print inet_ntoa(inet_aton($_))' 
78.137.18 
78.137.0.18 

InetSocketAddress的构造也将接受主机名。

如果你想明确拒绝这些地址(但你确定吗?),那么你将不得不编写代码来检查地址字符串,可能与正则表达式。

+0

我试图连接到我敢肯定,一个IP地址了。尽管如此,这个例外还没有被调用。你有好主意吗 ? – madCode 2012-04-26 07:57:25

1

InetSocketAddress创建其表示套接字地址的对象。它确实将主机名解析为IP地址,但它不连接也不绑定到指定的地址。这就是为什么你没有得到例外。地址在语法上是正确的,并且连接尝试永远不会发生,所以没有理由抛出异常。

+0

我试图连接,但我没有得到例外。但现在,我解决了它有一个timeoutException。 – madCode 2012-04-26 08:03:41