Posted on 2010-04-13 19:00
leekiang 閱讀(1732)
評論(0) 編輯 收藏 所屬分類:
java 、
io,tcp
Java中可以使用HttpURLConnection來請求WEB資源。
HttpURLConnection對象不能直接構造,需要通過
URL.openConnection()來獲得HttpURLConnection對象,示例代碼如下:
String urlStr=
www.ttt.org;
URL url = new
URL(urlStr);
HttpURLConnection conn =
(HttpURLConnection)url.openConnection();
?
HttpURLConnection是基于HTTP協議的,其底層通過socket通信實
現。如果不設置超時(timeout),在網絡異常的情況下,可能會導致程序僵死而不繼續往下執行。可以通過以下兩個語句來設置相應的超時:
System.setProperty("sun.net.client.defaultConnectTimeout",
超時毫秒數字符串);
System.setProperty("sun.net.client.defaultReadTimeout",
超時毫秒數字符串);
其中:
sun.net.client.defaultConnectTimeout:連接主機的超時時間(單位:毫秒)
sun.net.client.defaultReadTimeout:
從主機讀取數據的超時時間(單位:毫秒)
例如:
System.setProperty("sun.net.client.defaultConnectTimeout",
"30000");
System.setProperty("sun.net.client.defaultReadTimeout",
"30000");
JDK
1.5以前的版本,只能通過設置這兩個系統屬性來控制網絡超時。在1.5中,還可以使用HttpURLConnection的父類
URLConnection的以下兩個方法:
setConnectTimeout:設置連接主機超時(單位:毫秒)
setReadTimeout:
設置從主機讀取數據超時(單位:毫秒)
例如:
HttpURLConnection urlCon =
(HttpURLConnection)url.openConnection();
urlCon.setConnectTimeout(30000);
urlCon.setReadTimeout(30000);
來源:http://www.xd-tech.com.cn/blog/article.asp?id=37
另外可參考java中處理http連接超時的方法
JDK中的URLConnection參數詳解
linux下設置connect連接超時的方法
java socket 用法(一)
Linux,可以修改/proc/sys/net/ipv4/tcp_syn_retries的值,缺省是72,大約5分鐘左右,改小點時間就短些