我希望我的程序在C#中執行前檢查網站是否在線,如何讓我的程序能ping通網站並檢查C#中的響應?如何檢查一個網站是否在C#中在線?
回答
您已使用System.Net.NetworkInformation.Ping
見下文。
var ping = new System.Net.NetworkInformation.Ping();
var result = ping.Send("www.google.com");
if (result.Status != System.Net.NetworkInformation.IPStatus.Success)
return;
我能想到的最簡單的方法是一樣的東西:
WebClient webClient = new WebClient();
byte[] result = webClient.DownloadData("http://site.com/x.html");
如果網站不在線DownloadData會拋出異常。
可能有類似的方法來ping網站,但除非您每秒檢查多次,否則這種差異不太可能引人注目。
您不應該下載整個頁面來驗證該網站是否已啓動 – BrokenGlass
在運行到錯誤503後,webclient對我更好,而不是httpwebrequest,httpwebrequest在webclient再次運行時繼續拋出503。 – bert
Ping只告訴你端口是活動的,它並不告訴你它是否真的是一個Web服務。
我的建議是針對URL
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("your url");
request.AllowAutoRedirect = false; // find out if this site is up and don't follow a redirector
request.Method = "HEAD";
try {
response = request.GetResponse();
// do something with response.Headers to find out information about the request
} catch (WebException wex)
{
//set flag if there was a timeout or some other issues
}
這執行HTTP HEAD請求不會實際獲取的HTML頁面,但它會幫助你找到最低的,你需要知道的。對不起,如果代碼不編譯,這只是我的頭頂。
完美。順便說一句,對於那些關心的人來說,實際上有一個「HEAD」的常量。 System.Net.WebRequestMethods.Http.Head。 –
小注記Digicoder的代碼和Ping方法的完整的例子:
private bool Ping(string url)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 3000;
request.AllowAutoRedirect = false; // find out if this site is up and don't follow a redirector
request.Method = "HEAD";
using (var response = request.GetResponse())
{
return true;
}
}
catch
{
return false;
}
}
if (!NetworkInterface.GetIsNetworkAvailable())
{
// Network does not available.
return;
}
Uri uri = new Uri("http://stackoverflow.com/any-uri");
Ping ping = new Ping();
PingReply pingReply = ping.Send(uri.Host);
if (pingReply.Status != IPStatus.Success)
{
// Website does not available.
return;
}
- 1. 檢查網站是否在線與AS3
- 2. 檢查網站是否在線
- 3. 如何檢查一個線程是否在C#中運行?
- 4. 檢查一個網站是否存在與C#?
- 5. 如何檢查IP /網站是否在線使用C#中的WebRequest?
- 6. 檢查網站是否與ASP.NET C#在線?
- 7. 檢查網站是否有證書C#
- 8. 如何在symfony中檢查網站是否位於iframe中?
- 9. 如何檢查網站是否在線,如果它是密碼保護
- 10. 如何檢查是否在C#ListBox中存在一個數組
- 11. 捲曲檢查是否在網站上
- 12. 檢查網站上是否存在cookie
- 13. 檢查網站是否存在
- 14. 檢查SharePoint網站是否存在
- 15. 檢查是否存在SharePoint網站
- 16. 如何檢查一個網站是否有RSS提要
- 17. 如何檢查一個域名列表是否有網站?
- 18. 如何檢查一個網站是否包含閃存
- 19. 如何檢查mootools.js是否實際在網站中使用?
- 20. 檢查,如果一個網站存在
- 21. 檢查一個網站是否存在與PHP
- 22. 如何檢查網站地圖是否包含一些網址
- 23. 檢查網站是否在線,限制超時
- 24. jQuery:檢查網站在線狀態是否使用AJAX
- 25. get_headers()用於檢查網站是否在線有多可靠?
- 26. 檢查一個Int是否在一個數組中C/C++
- 27. 如何檢查用戶是否在線
- 28. 如何檢查是否有人在線?
- 29. Python-如何檢查一個Twitch流是否在線
- 30. 如何檢查是否用戶已共享網站在Facebook上
對[平類]同步和異步的例子(http://msdn.microsoft.com/en- us/library/system.net.networkinformation.ping.aspx)MSDN上的頁面。 – drew010
+1。學到了新東西:D –
您也可以使用WebClient類並請求資源或URL。 Ping不一定意味着網站在線,除非你只是想檢查服務器是否啓動。 – lahsrah