Java中Socket設置連接超時的代碼
大家都知道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();
那麼,就到這裏吧!
-
Java 正則表達式
Java是一門編程語言,那麼大家知道Java正則表達式是怎樣的呢?下面一起來看看!Java正則表達式正則表達式定義了字符串的模式。正則表達式可以用來搜索、編輯或處理文本。正則表達式並不僅限於某一種語言,但是在每種語言中有細微的差別。正則表達式實例一個字符串其...
-
java語言的接口與繼承
Java是一個面向對象的語言。對程序員來説,這意味着要注意應中的數據和操縱數據的方法,而不是嚴格地用過程來思考。下面是小編分享的java語言的接口與繼承,一起來看一下吧。大多數人認為,接口的意義在於頂替多重繼承。眾所周知Java沒有c++那樣多重繼承的機制,但是卻...
-
如何實現javascript去除字符串裏中文與空格
導語:如何實現javascript去除字符串裏中文與空格呢?下面是小編給大家提供的示例代碼實現,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。1.去掉空格:functionmoveSpace(){varstr="abcdefg";alert(ace(/[]/g,""));}moveSpace();2.去掉中文:vartitle="字符串zifuc...
-
如何在Javascript中為String對象添加trim,ltrim,rtrim方法
如何在Javascript中為String對象添加trim,ltrim,rtrim方法呢?下面是小編給大家提供的實現代碼,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。利用Javascript中每個對象(Object)的prototype屬性我們可以為Javascript中的內置對象添加我們自己的方法和屬性。j...