大家都知道Java的Socket如果連接不到指定IP和Port的主機,就會拋出IOException異常,而通常情況下,從連接到出現IOException會有一段不定的時長,就是所謂的超時時長,如果超時時長過長,在開發時會影響測試,如果代碼成了產品,又會非常的影響用戶體驗,那麼要怎麼設置這個時長呢?今天本站小編爲大家整理的Java中Socket設置連接超時的代碼,僅供學習參考,歡迎大家閱讀瀏覽!
Socket的類提供了一個方法:
public void connect(SocketAddress endpoint, int timeout)
throws IOException
參數:
endpoint – SocketAddress 提供主機IP和Port
timeout – 要使用的超時值(以毫秒爲單位)。
該方法用於將Socket連接到指定的服務器,並設定一個超時值。超時值設定爲大於0時,當超時後,就會拋出異常,停止連接,而超時值設爲0將無限超時。
因此,使用上述方法就可以設置Socket連接的超時時長了,代碼如下:
// 設置ip和prot
String ip = "";
int port = 8888;
// 創建Socket
Socket client = new Socket();
// 設置發送地址
SocketAddress addr = new InetSocketAddress(ip, port);
// 超時1秒,並連接服務器
ect(addr, 1000);
解釋一下上面的etAddress和InetSocketAddress,這兩個類用於創建Socket連接地址,前者是抽象類,後者是前者的子類,通過構造方法來創建地址:
public InetSocketAddress(String hostname, int port)
參數:
hostname – 主機名,也可以是ip
port – 端口號
另外,InetSocketAddress還提供了一些與網絡相關的方法,比如常用的獲取本機IP的方法:
public final InetAddress getAddress()
這個方法會返回一個InetAddress,然後通過InetAddress的方法獲取IP,如下:
public String getHostAddress()
那麼獲取本機IP的代碼就是:
// client就是上面創建的Socket
String host_ip = ddress()ostAddress();
那麼,就到這裏吧!