자바 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.
}
'java' 카테고리의 다른 글
multipart/form-data 자바에서 받는 여러가지 선택지! file upload (0) | 2016.08.11 |
---|---|
hssf vs xssf (0) | 2016.08.10 |
현재 돌고 있는 threadpool 리스트 보기 (0) | 2016.07.04 |
ehcache 캐시와 연동하기 (0) | 2016.06.15 |
timer schedule vs scheduleAtFixedRate (0) | 2016.06.15 |