12

如果我有一个String代表 IP 地址(IPv4 或 IPv6),我如何创建一个ServerSocket并绑定到该 IP 而无需关心传入的 IP 是 IPv4 还是 IPv6?
我看到有一个构造函数:ServerSocket(int port, int backlog, InetAddress bindAddr)InetAddress似乎没有提供任何构造函数,它的子类具有特定于 IPv4 和 IPv6 的名称。
那么如何将套接字绑定到 IP 呢?

4

1 回答 1

33

您可以使用工厂方法INetAddress.getByName。它会确定使用哪个子类。例如:

InetAddress addr = InetAddress.getByName("127.0.0.1");
// or
InetAddress addr = InetAddress.getByName("::1");

// and now you can pass it to your socket-constructor
ServerSocket sock = new ServerSocket(1234, 50, addr);
于 2013-02-20T09:58:16.183 回答