Java 如何将套接字连接从一个socketchannel传输到另一个socketchannel?

Java 如何将套接字连接从一个socketchannel传输到另一个socketchannel?,java,sockets,nio,socketchannel,Java,Sockets,Nio,Socketchannel,我有一个ServerSocketChannel,一旦这个通道接受了一个连接,我想把它“传输”或“传递”到一个SocketChannel。一旦我接受了连接,我就尝试简单地执行一个socketchannel.bind(ServerSocketChannel.socket.getLocalSocketAddress),但是我遇到了一个异常,说“地址已经在使用中”。这很有意义,因此我尝试将套接字地址保存在变量中,关闭ServerSocketChannel,然后尝试将其与变量绑定,但它仍然抱怨已在使用 /

我有一个ServerSocketChannel,一旦这个通道接受了一个连接,我想把它“传输”或“传递”到一个SocketChannel。一旦我接受了连接,我就尝试简单地执行一个
socketchannel.bind(ServerSocketChannel.socket.getLocalSocketAddress)
,但是我遇到了一个异常,说“地址已经在使用中”。这很有意义,因此我尝试将套接字地址保存在变量中,关闭ServerSocketChannel,然后尝试将其与变量绑定,但它仍然抱怨已在使用

//Accept the connection
ServerSocketChannel.accept();

//Save the address and close the connection
address = ServerSocketChannel.socket().getLocalSocketAddress();
ServerSocketChannel.close();

//Bind the address to another channel
SocketChannel.bind(address);//Here is where I get the exception

这就是我的解决方案现在的样子(除了变量名,但你知道了)。我不能通过该通道接受它的原因是,一旦建立了此连接,它将用于另一个目的,因此我需要打开专用的ServerSocketChannel以接受连接,然后将连接传递给SocketChannel。

我刚刚解决了我的问题。我忽略了一些简单的事情,而是尝试了更长的方法。
SocketChannel=ServerSocketChannel.accept()

是我一直在寻找的。

需要代码。你为什么要这样做?这感觉像是一个XY问题。你想解决问题“Y”,但你说你的问题是“X”——如何传递套接字通道。请描述更多你实际想做的事情。通常情况下,您只需从服务器套接字获取接受的通道并使用它。当然,我编辑了我的原始帖子。没有“将连接从一个套接字通道传输到另一个套接字通道”这样的事情。已接受的连接由
ServerSocketChannel.accept()
SocketChannel
的形式返回,但您正在丢弃它。”我不能就这样接受这个频道。。。因为一旦建立了这种联系,它就被用于另一个目的,这是毫无意义的。你的问题毫无意义,你刚刚解决了?二十四小时前有人告诉过你。两次。我很感谢你的回答,但我以前并没有真正理解它们。我相信你说过“不存在“将连接从一个套接字通道传输[振铃]到另一个套接字通道”这样的事情”,这不正是我使用
SocketChannel=ServerSocketChannel.accept()所做的吗?
不,你正在从一个侦听通道接受连接的通道。收听频道根本没有连接。