Java:将字符串(表示IP)转换为InetAddress

rob*_*rob 77 java ip inetaddress

可能重复:
是否有一种简单的方法将String转换为Java中的Inetaddress?

我正在尝试将字符串(例如表示IP地址10.0.2.50)转换为InetAddressobj.

根据API,可以创建提供表示主机名(例如www.google.ch)的字符串的Object .这不是我的选择,因为我没有我想要创建的每个InetAddress对象的主机名(除了它需要太长时间).

是否可以将String(例如10.0.2.50)转换为InetAddressobj.(根据api,如果你有IP byte[],可以这样做,但是如何将String包含IP的转换为byte[]?)

Jus*_*ugh 153

只需拨打InetAddress.getByName(String host)您的文字IP地址即可.

来自javadoc:主机名可以是机器名,例如"java.sun.com",也可以是其IP地址的文本表示.

InetAddress javadoc

  • 如果你打算做的只是解析IP地址,这是一个坏主意,因为getByName也会进行主机名查找.如果将主机名传递给您的函数,您将执行您不想要的同步网络I/O. (17认同)
  • @GlennMaynard:实际的JDK代码检查第一个字符是否为数字,如果是,则只使用IPAddressUtil进行解析. (4认同)
  • 使用它的人请注意,如果 ip 地址无效,查找的超时时间足够长,重复执行时会导致程序运行缓慢。 (2认同)

Bjö*_*örn 18

来自以下文件InetAddress.getByName(String host):

主机名可以是计算机名称,例如"java.sun.com",也可以是其IP地址的文本表示形式.如果提供了文字IP地址,则仅检查地址格式的有效性.

所以你可以使用它.