자바 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.
}
출처 : http://kdarkdev.tistory.com/251
반응형
'배워야 산다 > JAVA' 카테고리의 다른 글
RAC 접속 URL STRING (0) | 2014.11.24 |
---|---|
자바 split의 효율적인 사용 (0) | 2014.03.07 |
자바 substring (0) | 2014.03.07 |
자바설치, 이클립스 설정 2/2 (0) | 2012.02.06 |
자바설치, 이클립스 설정 1/2 (0) | 2012.02.06 |