Java.Net.SocketTimeoutException: 연결 시간 초과
- Java의 소켓
- Java의 시간 초과
-
Java에서
java.net.SocketTimeoutException: Connection timed out
의 원인 -
Java에서
java.net.SocketTimeoutException: Connection timed out
에 대한 솔루션
오늘 기사에서는 java.net.SocketTimeoutException: Connection timed out
에 대해 설명합니다. 하지만 먼저 소켓과 타임아웃의 개념을 자세히 살펴보겠습니다.
Java의 소켓
두 컴퓨터 응용 프로그램 간의 논리 링크에는 여러 끝점이 있을 수 있으며 그 중 하나는 소켓입니다.
달리 말하면 응용 프로그램이 네트워크를 통해 데이터를 송수신하는 데 사용하는 논리적 인터페이스입니다. IP 주소와 포트 번호는 가장 기본적인 형태의 소켓을 구성합니다.
각 소켓에는 고유한 포트 번호가 할당되어 서비스를 식별하는 데 사용됩니다. 연결 기반 서비스는 TCP를 기반으로 하는 스트림 소켓을 사용합니다.
이 때문에 Java는 클라이언트 측 프로그래밍 옵션으로 java.net.Socket
클래스를 제공합니다.
한편, java.net.ServerSocket
클래스는 서버측 TCP/IP 프로그래밍에 사용됩니다. UDP를 기반으로 하는 데이터그램 소켓은 또 다른 종류의 소켓이며 연결 없는 서비스에 사용되는 소켓입니다.
Java는 UDP 작업을 위해 java.net.DatagramSocket
을 지원합니다.
Java의 시간 초과
socket
객체의 인스턴스는 socket
생성자가 호출될 때 생성되어 클라이언트 측에서 클라이언트와 서버 간의 연결을 허용합니다.
입력으로 생성자는 원격 호스트의 주소와 포트 번호를 받을 것으로 예상합니다. 그런 다음 제공된 매개변수를 사용하여 원격 호스트에 대한 연결을 설정하려고 시도합니다.
이 작업은 성공적인 연결이 생성될 때까지 다른 프로세스가 진행되지 않도록 합니다. 그러나 지정된 시간 이후에 연결에 실패하면 응용 프로그램에서 다음 오류가 발생합니다.
java.net.SocketTimeoutException : Connection timed out
들어오는 연결 요청을 수신하면 서버 측의 ServerSocket
클래스가 영구적으로 활성화됩니다. ServerSocket
에서 연결 요청을 수신하면 accept
기능이 호출되어 새 socket
개체를 생성합니다.
이전 방법과 유사하게 이 방법은 원격 클라이언트가 연결될 때까지 차단됩니다.
Java에서 java.net.SocketTimeoutException: Connection timed out
의 원인
다음은 오류가 발생할 수 있는 몇 가지 이유입니다.
- 서버가 정상적으로 작동합니다. 그러나
timeout
값은 더 짧은 시간으로 설정됩니다. 따라서timeout
값을 늘리십시오. - 원격 호스트에서 어떤 서비스도 지정된 포트를 수신하지 않습니다.
- 전송 중인 원격 호스트에 대한 경로가 없습니다.
- 원격 호스트가 연결을 허용하지 않는 것 같습니다.
- 원격 호스트에 도달하는 데 문제가 있습니다.
- 인터넷 연결이 느리거나 사용할 수 없습니다.
Java에서 java.net.SocketTimeoutException: Connection timed out
에 대한 솔루션
클라이언트 및 서버 활동에 대한 timeout
옵션을 미리 설정할 수 있습니다. try
및 catch
구문을 추가하면 적절한 솔루션이 됩니다.
-
클라이언트 측에서 가장 먼저 할 일은 null
소켓
을 구성하는 것입니다. 그런 다음connect()
메서드를 사용한 다음 시간 제한이 0밀리초보다 커야 하는timeout
매개 변수를 구성합니다.함수가 반환되기 전에 제한 시간이 만료되면
SocketTimeoutException
이 발생합니다.Socket s = new Socket(); SocketAddress sAdres = new InetSocketAddress(host, port); s.connect(sAdres, 50000);
-
서버 측에서
timeout
값을 설정하려면setSoTimeout()
기능을 사용할 수 있습니다.timeout
매개변수의 값은ServerSocket.accept()
함수가 차단할 시간을 결정합니다.ServerSocket servers = new new ServerSocket(port); servers.setSoTimeout(10000);
마찬가지로
timeout
은 0밀리초보다 커야 합니다. 메서드가 반환되기 전에timeout
이 만료되면 메서드는SocketTimeoutException
을 생성합니다. -
연결 시간 초과를 결정한 다음
try-catch
블록을 사용하여 나중에 처리하는 것은HttpException
을 처리하는 또 다른 훌륭한 기술입니다.HttpUrlConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(8000);
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn