首頁 >Java >java教程 >Java中Socket設定連線逾時的程式碼實作詳解

Java中Socket設定連線逾時的程式碼實作詳解

怪我咯
怪我咯原創
2017-07-02 10:17:171800瀏覽

在我們日常連接中,如果超時時長過長的話,在開發時會影響測試,下面這篇文章主要給大家分享了關於Java中Socket設定連接超時的程式碼,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

大家都知道Java的Socket如果連接不到指定IP和Port的主機,就會拋出IO Exception異常,而通常情況下,從連接到出現IOException會有一段不定的時長,就是所謂的超時時長,如果超時時長過長,在開發時會影響測試,如果程式碼成了產品,又會非常的影響使用者體驗,那麼要怎麼設定這個時長呢?下面來一起看看詳細的介紹:

Socket的類別提供了一個方法:

public void connect(SocketAddress endpoint, int timeout) 
    throws IOException

參數:

  • endpoint – SocketAddress 提供主機IP和Port

  • #timeout – 要使用的逾時值(以毫秒為單位)。

此方法用於將Socket連接到指定的伺服器,並設定逾時值。逾時值設定為大於0時,當逾時後,就會拋出異常,停止連接,而逾時值設為0將無限逾時。

因此,使用上述方法就可以設定Socket連線的逾時時長了,程式碼如下:

// 设置ip和prot
String ip = "127.0.0.1";
int port = 8888;
// 创建Socket
Socket client = new Socket();
// 设置发送地址
SocketAddress addr = new InetSocketAddress(ip, port);
// 超时1秒,并连接服务器
client.connect(addr, 1000);

解釋一下上面的SocketAddress和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 = client.getAddress().getHostAddress();

那麼,就到這裡吧!

以上是Java中Socket設定連線逾時的程式碼實作詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn