打开ServerSockets并将它们绑定到不同的IP地址Linux

时间:2019-06-20 21:29:09

标签: java linux sockets ip-address serversocket

我想打开侦听不同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地址 但是我该怎么做才能将多个地址绑定到本地主机。

0 个答案:

没有答案