java語言

當前位置 /首頁/計算機/java語言/列表

Java中Socket設定連線超時的程式碼

大家都知道Java的Socket如果連線不到指定IP和Port的主機,就會丟擲IOException異常,而通常情況下,從連線到出現IOException會有一段不定的時長,就是所謂的超時時長,如果超時時長過長,在開發時會影響測試,如果程式碼成了產品,又會非常的影響使用者體驗,那麼要怎麼設定這個時長呢?今天本站小編為大家整理的Java中Socket設定連線超時的程式碼,僅供學習參考,歡迎大家閱讀瀏覽!

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();

那麼,就到這裡吧!