我想打开侦听不同IP地址的不同ServerSocket。
我知道在Java中我可以那样做:
serverSocket = new ServerSocket(8888,0,InetAddress.getByName("fe80::250:56ff:fec0:8"));
但是,只有当我使用ifconfig获得的IP地址时,该功能才有效。否则,我会收到此异常:
java.net.BindException: Cannot assign requested address (Bind failed)
at java.base/java.net.PlainSocketImpl.socketBind(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:436)
at java.base/java.net.ServerSocket.bind(ServerSocket.java:381)
at java.base/java.net.ServerSocket.<init>(ServerSocket.java:243)
例如,我想打开套接字:一个监听192.168.0.11 / 8888,另一个监听192.168.0.12/8888。我可以在运行时获取地址,但可以使用固定范围的IP地址。当它也可以与IPv6一起使用时会很好。
我的问题是如何配置网络接口,以便可以在特定IP地址范围内打开不同的ServerSocket?
修改
为弄清原因,我想这样做。我实现了一个路由器,可将数据包转发到没有IP地址的其他设备。但它们看起来应该像拥有自己的IP地址 但是我该怎么做才能将多个地址绑定到本地主机。