如何使用AsynchronousServerSocketChannel绑定多个端口?

5

我试图创建一个具有异步通信模型的服务器,并希望绑定多个端口,但当我调用多个bind方法时,它会抛出"AlreadyBoundException"错误。是否有可能做到这一点?下面是我的代码:

try(AsynchronousServerSocketChannel listener = AsynchronousServerSocketChannel.open()){
                if(listener.isOpen()){
                    listener.setOption(StandardSocketOptions.SO_RCVBUF, 4*1024);
                    listener.setOption(StandardSocketOptions.SO_REUSEADDR, true);
                    listener.bind(new InetSocketAddress(9001));
                    listener.bind(new InetSocketAddress(9002));
1个回答

0

您只能将单个AsynchronousServerSocketChannel(或任何其他NetworkChannelSocket)绑定到一个端口。如果套接字已经绑定,则AlreadyBoundException方法会抛出bind()异常。

但是,您可以使用多个AsynchronousServerSocketChannel,每个通道对应一个端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接