使用任何主机的 IP 地址构造 InetSocketAddress 的正确方法是什么?
2022-09-04 19:23:18
我想创建一个InetSocketAddress,但无论我得到一个host:port还是一个ip:port,我都想把它做好。我看到它有两个构造函数,一个用于主机(字符串),另一个用于IP(InetAddress)。我是否必须自己确定自己是否拥有 IP 或 HOST 才能在这两个构造函数之间进行选择?我在这里错过了什么吗?
我想创建一个InetSocketAddress,但无论我得到一个host:port还是一个ip:port,我都想把它做好。我看到它有两个构造函数,一个用于主机(字符串),另一个用于IP(InetAddress)。我是否必须自己确定自己是否拥有 IP 或 HOST 才能在这两个构造函数之间进行选择?我在这里错过了什么吗?
您可以从Javadoc中推断出来,并在源代码中看到 调用 ,它按照文档为您整理所有内容。new InetSocketAddress(String hostname, int port)
InetAddress.getByName(hostname)
因此,您发布的问题实际上并不存在。只需传递您获得的任何字符串,无论是主机名还是IP地址。
我不完全确定你的要求是什么,但是,我在我的PC上做了这个快速测试,没有任何问题
try {
String ipAddress = ""; // Add your own
String hostName = ""; // Add your own
int port = ...; // You'll need some sort of service to connect to
InetSocketAddress byAddress1 = new InetSocketAddress(ipAddress, port);
InetSocketAddress byAddress2 = new InetSocketAddress(InetAddress.getByName(ipAddress), port);
InetSocketAddress byName1 = new InetSocketAddress(hostName, port);
InetSocketAddress byName2 = new InetSocketAddress(InetAddress.getByName(hostName), port);
} catch (UnknownHostException unknownHostException) {
unknownHostException.printStackTrace();
}
更大的问题是,期望得到什么作为输入?IP地址,主机名或其他形式??