1

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

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

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

2 回答 2

3

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

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

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

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

于 2012-04-26T07:54:18.397 回答
1

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

于 2012-04-26T08:01:50.290 回答