인프런 커뮤니티 질문&답변

유슬기님의 프로필 이미지
유슬기

작성한 질문수

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

네트워크 예외4 - 강제 종료

현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다

작성

·

279

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 인턴입니다.

질문해 주신 “현재 연결은 사용자의 호스트 시스템의 소프트웨어에 의해 중단되었습니다”라는 에러 메시지는 주로 다음과 같은 경우에 발생할 수 있습니다:

  1. 방화벽 문제: 시스템의 방화벽이 네트워크 통신을 차단하여 연결이 중단될 수 있습니다. 방화벽 설정을 확인해보시고, 필요에 따라 일시적으로 방화벽을 비활성화하여 문제가 해결되는지 확인해 보세요.

  2. 보안 소프트웨어: 보안 소프트웨어(예: 안티바이러스, VPN 등)가 특정 포트나 프로그램의 네트워크 접근을 차단할 수 있습니다. 보안 소프트웨어의 설정을 확인하거나 잠시 비활성화하여 테스트해 보시기 바랍니다.

  3. 네트워크 설정 문제: 네트워크 설정, 특히 TCP/IP 프로토콜 설정이나 DNS 설정에 문제가 있을 수 있습니다. 네트워크 설정을 체크하고 재설정해 보세요.

  4. 서버 설정 문제: 서버 소켓이 제대로 설정되지 않았거나, 클라이언트와의 연결을 수용할 상태가 아닐 때 이런 문제가 발생할 수 있습니다. 서버 소켓이 정상적으로 작동하고 있는지, 포트가 맞게 설정돼 있는지 확인해 주세요.

참고로, 유사한 사례와 추가적인 해결 방법을 다룬 자료는 다음에서 확인하실 수 있습니다:
- 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다 (유사 질문)
- 스프링 MVC에서 발생하는 유사한 연결 문제 해결

문제가 해결되지 않는다면, 에러 발생 시의 로그와 네트워크 설정을 상세히 점검하는 것이 도움이 될 수 있습니다. 강의와 함께하셔서 도움이 되었기를 바랍니다. 추가로 궁금한 사항이 있으시다면 언제든지 질문해주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

유슬기님의 프로필 이미지
유슬기

작성한 질문수

질문하기