【问题标题】:String to InetAddress error in conversion [duplicate]转换中的字符串到 InetAddress 错误[重复]
【发布时间】:2013-09-18 10:11:29
【问题描述】:

我想我的问题对于这里的人来说很容易回答?问题是当我执行以下代码时:

InetAddress addr;
addr=InetAddress.getByName("192.168.1.1");
Toast.makeText(this,"InetAddress Value: "+addr.toString(),Toast.LENGTH_LONG).show();

addr 的返回值为/192.168.1.1 我想知道我做错了什么? 先谢谢了!!!

【问题讨论】:

  • 你期望得到什么?

标签: java android


【解决方案1】:

here的回答。

如果你只想要IP,使用主机地址:

String address = InetAddress.getByName("stackoverflow.com").getHostAddress();

如果您只想要主机名,请使用

String hostname = InetAddress.getByName("stackoverflow.com").getHostName();

编辑

您看到的斜线可能是当您尝试打印返回的 InetAddress 时对返回的 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];

但是这里完全没有理由去 String 中介。 InetAddress 使这两个字段在本质上是分开的。

【讨论】:

  • 即使我只是编码 Toast.makeText(this,"InetAddress Value: "+addr,Toast.LENGTH_LONG).show();它给出了相同的答案。
  • 你想看什么..?
  • public void getInet(View v1) throws UnknownHostException{ String asd=ed1.getText().toString(); InetAddress 地址=InetAddress.getByName(asd); Toast.makeText(this, "Inet 地址:"+addr, Toast.LENGTH_LONG).show();上面的简单代码给出了在edittext中传递的任何ipaddress作为/+edittext值。无论如何要删除前斜线
  • 您想在 Toast 中看到什么......您的预期输出是什么?
  • 它应该只有 192.168.1.1 因为我只想将字符串转换为 inetaddress 以便可以 ping 到 ip
猜你喜欢
  • 2011-07-31
  • 2015-01-17
  • 2017-02-03
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多