본문 바로가기

IT게시판

java 소켓 연결 Timeout 설정

 

 

보통 Socket에서 대한 ReadTimeout 설절을 하면서 Socket에 대한 Connection 타임아웃을 누락하는 경우가 있습니다.

해당 Socket이 정상적으로 Open 되어 있지 않을때,

Socket connection 타임아웃이 없으면 수초동안 waitting이 걸릴 수 있습니다.

Web Application 내에서라면 WAS에서 사용하는 외부 소켓문제로 인해 Thread가 full되어 서비스 불능이 될 수도 있습니다.

따라서 Socket의 connection에 문제가 있다면 바로 식별 할 수 있도록 connection 타임아웃 이간을 넣어주시기 바랍니다.

 

연결 대상 69.111.112.159...호스트에 연결할 수 없습니다. 포트 3434: 연결하지 못했습니다.

 

 

이 경우에 소켓 연결 자체에 대한 Timeout 설정을 해서 Application이 소켓 연결을 위한 wait time을 줄여 주어야 합니다.

 

Socket m_sock=null;
try{
    int timeout = 500;  //Socket connection check. timeout : 0.5sec
    SocketAddress socketAddress = new InetSocketAddress(sIp, nPort);
    m_sock = new Socket();
    m_sock.connect(socketAddress, timeout); //Socket 연결 자체에 대한 타임아웃 설정
} catch (SocketException se) {
se.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
m_sock.close();
} catch (Exception e) {
e.printStackTrace();
}


}