PC上の別のアプリケーションが同じリモートIPアドレスに接続されていると、Javaアプリケーションが正しく接続できなくなります。接続がすでに使用されているときにJavaがnio SocketChannel接続を取得する
これは、ソケットチャネルを閉じずにexits abruptlyを実行したときにも発生します。接続がブロックされ、後続のセッション中に接続することはできません。
基礎となるOSの接続状態に関係なく、私のプログラムが100%時間を確実に接続できるようにするにはどうすればよいですか?私は、クロスプラットフォームソリューションを探しています
(Windowsの& Ubuntuの)
public void connect() throws CommunicationIOException {
try {
if (isConnected()) {
return;
}
socket = SocketChannel.open();
socket.socket().connect(new InetSocketAddress(getHostname(), getPort()), getConnectionTimeout());
if (!isConnected()) {
throw new CommunicationIOException("Failed to establish the connection");
}
socket.configureBlocking(false);
} catch (final IOException ex) {
throw new CommunicationIOException(
"An error occurred while connecting to " + getHostname() + " on port " + getPort(), ex);
}
}
。
public boolean isConnected() {
if (socket == null) {
return false;
} else {
return socket.isConnected();
}
}
。
public void close() throws CommunicationIOException {
if (socket != null) {
try {
socket.close();
} catch (final IOException ex) {
throw new CommunicationIOException(
MessageFormat.format(
"An error occurred while attempting to close the connection to {}:{}",
getHostname(), getPort()), ex);
}
}
}
すべての洞察力(および下位票)のおかげで@EJPに感謝します。まだ解決していない! – klonq
あなたは両方のダウンワードを私に帰しているようです。ここでお客様一人一人がダウンボトム。もっとナンセンス。 – EJP