PC의 다른 응용 프로그램이 동일한 원격 IP 주소에 연결되어 있으면 Java 응용 프로그램이 제대로 연결되지 않습니다.연결이 이미 사용 중일 때 자바가 nio SocketChannel 연결을 얻습니다.
소켓 채널을 닫지 않고 exits abruptly이 발생하는 경우에도 이러한 현상이 발생할 수 있습니다. 연결이 차단 될 수 있으며 후속 세션 중에 연결할 수 없습니다.
기본 OS의 연결 상태에 상관없이 내 프로그램이 100 % 시간을 연결하도록하려면 어떻게해야합니까? 나는 크로스 플랫폼 솔루션을 찾고
(윈도우 & 우분투)
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();
}
}
. PC에서 다른 응용 프로그램이 동일한 원격 IP 주소에 연결되어있는 경우
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);
}
}
}
모든 통찰력 (및 하향 투표)에 대해 감사합니다. 아직 해결되지 않았습니다! – klonq
두 다운 폰트를 나에게 귀속시킨 것 같습니다. 여기 고객 한 분 한 분 downvote. 더 말도 안돼. – EJP