본문 바로가기

java

setSoTimeout, connect timeout

자바 1.4부터 소켓통신(socket)할때 timeout을 걸어주는 메서드가 추가 되었습니다.

보통 socket.setSoTimeout() 타임아웃 설정으로 착각할 수도 있는데 

이 메서드는 소켓이 연결된후 InputStream에서 읽을때 timeout을 설정하는것이고 

socket연결할때 timeout주는것은 InetSocketAddress클래스 사용 합니다.


01.import java.io.IOException;
02.import java.net.InetSocketAddress;
03.import java.net.Socket;
04.import java.net.SocketAddress;
05.import java.net.SocketException;
06. 
07./**
08.* 자바 소켓통신 타임아웃 테스트
09.* @author kdarkdev
10.* 2013. 6. 26.
11.*/
12.public class SocketTimeoutTest {
13. 
14./**
15.* @param args
16.*/
17.public static void main(String[] args) {
18.String hostname = "127.0.0.1";
19.int port = 5000;
20.int timeout = 3000;
21.SocketAddress socketAddress = new InetSocketAddress(hostname, port);
22.Socket socket = new Socket();
23.try {
24.socket.setSoTimeout(timeout);           /* InputStream에서 데이터읽을때의 timeout */
25.socket.connect(socketAddress, timeout); /* socket연결 자체에대한 timeout */
26.catch (SocketException e) {
27.e.printStackTrace();
28.catch (IOException e) {
29.e.printStackTrace();
30.finally {
31.try {
32.socket.close();
33.catch (IOException e) {
34.e.printStackTrace();
35.}
36.}
37.}
38.}