Java InetAddress.toString()返回正斜杠

Java InetAddress.toString()返回正斜杠,java,Java,我有一个类型为DatagramPacket的变量包。虽然packet.getAddress().toString()生成一个表示IP地址的字符串,但它在字符串开头附加了一个额外的/: /127.0.0.1 我可以很容易地删除前导的“/”,但是有没有更好的方法只获取IP的字符串表示?我很担心,因为如果在其他情况下有更多的“/”,会怎么样 谢谢 使用以下命令: packet.getAddress().getHostAddress() 从: 以文本形式返回IP地址字符串 与之相比: 将此IP地址转

我有一个类型为
DatagramPacket
的变量包。虽然
packet.getAddress().toString()
生成一个表示IP地址的字符串,但它在字符串开头附加了一个额外的
/

/127.0.0.1
我可以很容易地删除前导的
“/”
,但是有没有更好的方法只获取IP的字符串表示?我很担心,因为如果在其他情况下有更多的
“/”
,会怎么样

谢谢

使用以下命令:

packet.getAddress().getHostAddress()
从:

以文本形式返回IP地址字符串

与之相比:

将此IP地址转换为
字符串
。返回的字符串的格式为:主机名/文字IP地址。如果主机名未解析,则不会执行反向名称服务查找。主机名部分将由一个空字符串表示


如果您只需要IP,请使用主机地址:

String address = InetAddress.getByName("stackoverflow.com").getHostAddress();
如果只需要主机名,请使用

String hostname = InetAddress.getByName("stackoverflow.com").getHostName();
您看到的斜杠可能是在您尝试打印返回的InetAddress时对其执行隐式toString()操作,该操作将打印由斜杠分隔的主机名和地址(例如stackoverflow.com/64.34.119.12)。你可以用

String address = InetAddress.getByName("stackoverflow.com").toString().split("/")[1];
String hostname = InetAddress.getByName("stackoverflow.com").toString().split("/")[0];
但是这里根本没有理由去字符串中介。InetAddress将两个字段本质上分开。

从此处复制: