- Java核心技術·卷Ⅱ:高級特性(原書第10版)
- (美)凱S.霍斯特曼
- 497字
- 2020-10-30 18:10:55
4.1.3 套接字超時
從套接字讀取信息時,在有數據可供訪問之前,讀操作將會被阻塞。如果此時主機不可達,那么應用將要等待很長的時間,并且因為受底層操作系統的限制而最終會導致超時。
對于不同的應用,應該確定合理的超時值。然后調用setSoTimeout方法設置這個超時值(單位:毫秒)。

如果已經為套接字設置了超時值,并且之后的讀操作和寫操作在沒有完成之前就超過了時間限制,那么這些操作就會拋出SocketTimeoutException異常。你可以捕獲這個異常,并對超時做出反應。

另外還有一個超時問題是必須解決的。下面這個構造器:

會一直無限期地阻塞下去,直到建立了到達主機的初始連接為止。
可以通過先構建一個無連接的套接字,然后再使用一個超時來進行連接的方式解決這個問題。

如果你希望允許用戶在任何時刻都可以中斷套接字連接,請查看4.3節。
java.net.Socket 1.0
·Socket()1.1
創建一個還未被連接的套接字。
·void connect(SocketAddress address)1.4
將該套接字連接到給定的地址。
·void connect(SocketAddress address,int timeoutInMilliseconds)1.4
將套接字連接到給定的地址。如果在給定的時間內沒有響應,則返回。
·void setSoTimeout(int timeoutInMilliseconds)1.1
設置該套接字上讀請求的阻塞時間。如果超出給定時間,則拋出一個Interrupted-IOException異常。
·boolean isConnected()1.4
如果該套接字已被連接,則返回true。
·boolean isClosed()1.4
如果套接字已經被關閉,則返回true。
推薦閱讀
- 深入理解Android(卷I)
- Visual Basic程序開發(學習筆記)
- Expert Data Visualization
- Learning Probabilistic Graphical Models in R
- PySpark Cookbook
- 匯編語言編程基礎:基于LoongArch
- 深度學習原理與PyTorch實戰(第2版)
- Instant Debian:Build a Web Server
- Oracle數據庫編程經典300例
- Python一行流:像專家一樣寫代碼
- C語言程序設計
- Learning D3.js 5 Mapping(Second Edition)
- 軟技能2:軟件開發者職業生涯指南
- JavaScript Mobile Application Development
- SAP HANA Starter