close

  第一種,是會丟出SocketTimeoutExcpetion的,有找到Host但一直等不到回應。可以設socket.setSoTimeout(timeout)。

  第二種,是會丟出UnknownHostException的,是找不到Host的,若在Local找不到這個Host很快就丟,但在Server通常內建一堆DNS解析IP,等全部巡完一輪都要等好久。所以時間內找不到就視為UnknownHostException作法如下:

Socket socket = SocketFactory.getDefault().createSocket();

SocketAddress remoteaddr = new InetSocketAddress(host, port);

socket.connect(remoteaddr, timeout);   // 就在connect時設timeout

若Socket一開始就傳了host和port,如SocketFactory.getDefault().createSocket(host, port),那這個Socket也等同在做connect動作,只因為沒設timeout,程式就hand在等socket create完畢,socket也痴痴等到確定找不到host。

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()