我得到BindException異常,同時重複使用相同的Address.Following是我的代碼。java.net.BindException:重新使用同一個連接時已經使用的地址
在的openConnection方法:
69. Selector selector = SelectorProvider.provider().openSelector();
70. SocketChannel socketChannel = SocketChannel.open();
71. socketChannel.bind(new InetSocketAddress(port));// Edited
72. socketChannel.socket().setReuseAddress(true);
73. socketChannel.configureBlocking(false);
74. socketChannel.connect(remoteAddress);
例外:
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:414)
at sun.nio.ch.Net.bind(Net.java:406)
at sun.nio.ch.SocketChannelImpl.bind(SocketChannelImpl.java:580)
at sun.nio.ch.SocketAdaptor.bind(SocketAdaptor.java:135)
at com.example.client.request.Client.openConnection(Client.java:72)
編輯
我解決了InvalidArgument異常,我已經編輯了上面的帖子,但現在重新連接在同一端口上,我得到了上面的異常。是我做錯了什麼?
* bind()之後調用setReuseAddress()*是徒勞的。它必須在之前被調用。但是根本不需要調用bind()。 – EJP 2014-09-03 11:56:14
@EJP謝謝,通過放置setReuseAddress()上面的bind()解決了這個問題,我使用綁定,因爲我想打開特定的端口並重用它。請將您的評論放在答案我想標記爲答案。 – rns 2014-09-03 12:15:07