작성
·
278
0
=====
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
<ResetClose Client>
package network.exception.close.reset;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import static util.MyLogger.log;
public class ResetCloseClient {
public static void main(String[] args) throws IOException, InterruptedException {
Socket socket = new Socket("localhost", 12345);
log("소캣 연결: " + socket);
InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream();
// Client <- Server : FIN
Thread.sleep(1000); // 서버가 Close() 호출할 때 까지 잠시 대기
// Client -> Server: PUSH[1]
output.write(1);
// Client <-- Server : RST
Thread.sleep(1000); //RST 메시지 전송 대기
try {
int read = input.read();
System.out.println("read = " + read);
} catch (IOException e) {
e.printStackTrace();
}
try {
output.write(1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
<ResetCloseServer>
package network.exception.close.reset;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import static util.MyLogger.log;
public class ResetCloseServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(12345);
Socket socket = serverSocket.accept();
log("소캣 연결 : " + socket);
socket.close();
serverSocket.close();
log("소캣 종료 : " + socket);
}
}
<클라이언트 결과>
C:\Users\nevr\.jdks\openjdk-21.0.2\bin\java.exe "-javaagent:E:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.3\lib\idea_rt.jar=49785:E:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.3\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath E:\mork\study\java-adv2\out\production\java-adv2 network.exception.close.reset.ResetCloseClient
06:06:39.444 [ main] 소캣 연결: Socket[addr=localhost/127.0.0.1,port=12345,localport=49791]
java.net.SocketException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다
at java.base/sun.nio.ch.SocketDispatcher.read0(Native Method)
at java.base/sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:46)
at java.base/sun.nio.ch.NioSocketImpl.tryRead(NioSocketImpl.java:256)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:307)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1099)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1093)
at network.exception.close.reset.ResetCloseClient.main(ResetCloseClient.java:29)
java.net.SocketException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다
at java.base/sun.nio.ch.SocketDispatcher.write0(Native Method)
at java.base/sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:54)
at java.base/sun.nio.ch.NioSocketImpl.tryWrite(NioSocketImpl.java:394)
at java.base/sun.nio.ch.NioSocketImpl.implWrite(NioSocketImpl.java:410)
at java.base/sun.nio.ch.NioSocketImpl.write(NioSocketImpl.java:440)
at java.base/sun.nio.ch.NioSocketImpl$2.write(NioSocketImpl.java:819)
at java.base/java.net.Socket$SocketOutputStream.write(Socket.java:1195)
at java.base/java.net.Socket$SocketOutputStream.write(Socket.java:1190)
at network.exception.close.reset.ResetCloseClient.main(ResetCloseClient.java:36)
Process finished with exit code 0
네트워크 예외4 - 강제종료 중 받은 메시지인데
수업에 말씀하신 Connection reset , pipe broken 이 아닌 "현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다" 에러 메시지가 나옵니다
위 에러메시지에 대해 궁금합니다! (사용자의 호스트 시스템?? 이게 어떤 시스템인지.., 방화벽 문제인지, 보안소프트웨어를 말하는지)
강의 너무 잘듣고 있습니다!! 영환쌤 늘 감사드립니다.
답변 2
0
안녕하세요. 유슬기님
OS에 따라서 다른 오류 메시지가 나올 수 있는데요. 같은 오류 메시지라고 이해하시면 됩니다.
강의 메뉴얼에 있는 실행 결과 - 윈도우 부분을 참고해주세요 🙂
다음은 강의 메뉴얼 내용입니다.
실행 결과 - 윈도우
11:10:36.119 [ main] 소캣 연결: Socket[addr=localhost/127.0.0.1,port=12345,localport=54490]
java.net.SocketException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다
...
java.net.SocketException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다
...
윈도우의 경우 같은 java.net.SocketException이 발생하지만 오류 메시지가 다르다.
감사합니다.
0
안녕하세요, 유슬기님. 인프런 AI 인턴입니다.
질문해 주신 “현재 연결은 사용자의 호스트 시스템의 소프트웨어에 의해 중단되었습니다”라는 에러 메시지는 주로 다음과 같은 경우에 발생할 수 있습니다:
방화벽 문제: 시스템의 방화벽이 네트워크 통신을 차단하여 연결이 중단될 수 있습니다. 방화벽 설정을 확인해보시고, 필요에 따라 일시적으로 방화벽을 비활성화하여 문제가 해결되는지 확인해 보세요.
보안 소프트웨어: 보안 소프트웨어(예: 안티바이러스, VPN 등)가 특정 포트나 프로그램의 네트워크 접근을 차단할 수 있습니다. 보안 소프트웨어의 설정을 확인하거나 잠시 비활성화하여 테스트해 보시기 바랍니다.
네트워크 설정 문제: 네트워크 설정, 특히 TCP/IP 프로토콜 설정이나 DNS 설정에 문제가 있을 수 있습니다. 네트워크 설정을 체크하고 재설정해 보세요.
서버 설정 문제: 서버 소켓이 제대로 설정되지 않았거나, 클라이언트와의 연결을 수용할 상태가 아닐 때 이런 문제가 발생할 수 있습니다. 서버 소켓이 정상적으로 작동하고 있는지, 포트가 맞게 설정돼 있는지 확인해 주세요.
참고로, 유사한 사례와 추가적인 해결 방법을 다룬 자료는 다음에서 확인하실 수 있습니다:
- 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다 (유사 질문)
- 스프링 MVC에서 발생하는 유사한 연결 문제 해결
문제가 해결되지 않는다면, 에러 발생 시의 로그와 네트워크 설정을 상세히 점검하는 것이 도움이 될 수 있습니다. 강의와 함께하셔서 도움이 되었기를 바랍니다. 추가로 궁금한 사항이 있으시다면 언제든지 질문해주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.