Java의 java.net.ConnectException 오류
이 자습서는 Java의 java.net.ConnectException
오류를 보여줍니다.
Java의 java.net.ConnectException
오류
java.net.ConnectException
은 네트워킹 작업 중 가장 일반적인 예외입니다. 주로 클라이언트, 응용 프로그램 및 서버 간에 TCP 연결을 만들 때 발생합니다.
try-catch 블록을 사용하여 코드에서 처리할 수 있는 확인된 응용 프로그램입니다. 이 예외는 IO 예외의 하위 클래스입니다.
다음은 이 예외의 계층 구조입니다.
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.io.IOException
java.net.SocketException
java.net.ConnectException
다음은 이 예외에 대한 가능한 이유입니다.
- 클라이언트와 서버가 동일한 네트워크에 있지 않은 경우 둘 다 인터넷이나 LAN과 같은 네트워크에 있어야 합니다. 그렇지 않으면
ConnectException
이 발생합니다. - 서버가 실행되고 있지 않을 때. 일반적으로 3306(MySQL), 8080(Tomcat용), 27017(MongoDB) 및 3000 또는 4200(React/Angular용)과 같은 포트는 완전히 다운되었거나 다른 엔터티에 의해 점유되어
ConnectException
을 발생시킵니다. - 보안이 통신을 허용하지 않는 경우(예: 방화벽의 경우). 이 경우
ConnectException
이 발생합니다. - 설정이 재정의되면 서버가 실행 중일 수 있지만 포트에 나열되면
ConnectException
이 발생합니다. - 연결 문자열이 올바르지 않은 경우, 예:
Connection DemoConnection = DriverManager.getConnection(
jdbc:mysql://localhost/:3306? +
user=&password= );
.ConnectException
이 발생합니다. - 실수로 잘못된 포트 번호를 입력하면
ConnectException
이 발생합니다.
ConnectException
에 대한 예를 살펴보겠습니다.
package delftstack;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;
public class Example {
public static void main(String[] args) throws IOException {
String Host_Name = "127.0.0.1";
int Port_Number = 808;
Socket New_Socket = new Socket(Host_Name, Port_Number);
InputStream Input_Stream = New_Socket.getInputStream();
InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
int Demo_Data;
StringBuilder Output_String = new StringBuilder();
while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
Output_String.append((char) Demo_Data);
}
}
}
위의 코드는 포트와 IP가 유효하지 않기 때문에 ConnectException
을 발생시킵니다. 출력 참조:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:579)
at java.base/sun.nio.ch.Net.connect(Net.java:568)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
at java.base/java.net.Socket.connect(Socket.java:633)
at java.base/java.net.Socket.connect(Socket.java:583)
at java.base/java.net.Socket.<init>(Socket.java:507)
at java.base/java.net.Socket.<init>(Socket.java:287)
at delftstack.Example.main(Example.java:16)
이제 try-catch
블록을 사용하여 예외를 처리할 수 있습니다. Checked 예외이므로 메서드에 throws
를 추가해야 합니다.
솔루션을 살펴보겠습니다.
package delftstack;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;
public class Example {
public static void main(String[] args) throws IOException {
String Host_Name = "127.0.0.1";
int Port_Number = 808;
try (Socket New_Socket = new Socket(Host_Name, Port_Number)) {
InputStream Input_Stream = New_Socket.getInputStream();
InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
int Demo_Data;
StringBuilder Output_String = new StringBuilder();
while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
Output_String.append((char) Demo_Data);
}
}
catch (ConnectException ex) {
System.out.println(
"The Connect Exception occured becuase the given hostname and port are invalid : "
+ ex.getMessage());
}
}
}
이제 예외가 처리되므로 코드가 충돌하지 않습니다. 출력 참조:
The Connect Exception occured becuase the given hostname and port are invalid : Connection refused: connect
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook