为什么“78.137.18”不被拒绝作为无效的IP地址?

时间:2012-04-26 07:47:41

标签: android sockets exception exception-handling

我正在尝试在我的android程序中发生异常时打印一些东西,在我的socket的异常块中。

但是,即使我提供了无效的IP地址,我的异常也没有被调用。

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

2 个答案:

答案 0 :(得分:3)

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

mslade@mickpc:~$ perl -nle 'use Socket; print inet_ntoa(inet_aton($_))'
78.137.18 
78.137.0.18

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

如果你想专门拒绝那些地址(但你确定吗?)那么你必须编写代码来检查地址字符串,也许是用正则表达式。

答案 1 :(得分:1)

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