[JAVA] 소켓연결시 TIMEOUT 설정

Posted by MD워시퍼
2019. 1. 2. 11:08 Study
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();
}
}
}
}

= 출처