[JAVA] 소켓연결시 TIMEOUT 설정
728x90
자바 1.4부터 소켓통신(socket)할때 timeout을 걸어주는 메서드가 추가 되었습니다.
보통 socket.setSoTimeout()을 타임아웃 설정으로 착각할 수도 있는데
이 메서드는 소켓이 연결된후 InputStream에서 읽을때 timeout을 설정하는것이고
socket연결할때 timeout주는것은 InetSocketAddress클래스를 사용 합니다.
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
public class SocketTimeoutTest {
public static void main(String[] args) {
String hostname = "127.0.0.1";
int port = 5000;
int timeout = 3000;
SocketAddress socketAddress = new InetSocketAddress(hostname, port);
Socket socket = new Socket();
try {
socket.setSoTimeout(timeout); /* InputStream에서 데이터읽을때의 timeout */
socket.connect(socketAddress, timeout); /* socket연결 자체에대한 timeout */
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
= 출처