我希望寫一個Windows應用程序,它做一些事情,當我成爲從互聯網上斷開。我想編寫一個非常簡單的C#/ Delphi應用程序,看看我還在連接的簡單調查,每20秒。如何判斷是否連接到互聯網
如果我要查詢我真的很想比試圖從網上下載一個網頁,其他的解決方案。我不能認爲下載嘗試失敗意味着「不在線」,因爲可能有其他應用程序正在消耗互聯網帶寬。另外,我確定不斷連接/從某個特定站點下載會阻止我的IP。
我敢肯定有一個的方式來告訴你,如果你在線沒有下載/連接到遠程服務器,但我不知道如何。
我希望寫一個Windows應用程序,它做一些事情,當我成爲從互聯網上斷開。我想編寫一個非常簡單的C#/ Delphi應用程序,看看我還在連接的簡單調查,每20秒。如何判斷是否連接到互聯網
如果我要查詢我真的很想比試圖從網上下載一個網頁,其他的解決方案。我不能認爲下載嘗試失敗意味着「不在線」,因爲可能有其他應用程序正在消耗互聯網帶寬。另外,我確定不斷連接/從某個特定站點下載會阻止我的IP。
我敢肯定有一個的方式來告訴你,如果你在線沒有下載/連接到遠程服務器,但我不知道如何。
要注意的是連接到互聯網並沒有真正意味着什麼:如果你正在連接到ISP,但骨幹已關閉,或者你要訪問的網站是在最近去了網格狀的國家?建立聯繫並不意味着你可以做你想做的事。
無論如何,前面所說,你可以使用InternetGetConnectedState
API來測試你是否有一個有效的網絡連接配置。
作爲一個例子,下面的例程正確告訴我我有一個局域網連接,但未能檢測到我的ZoneAlarm防火牆設置爲阻止「所有Internet活動」,這意味着您有效地丟失了所有Internet連接。
Delphi的例程:
procedure IsConnected;
var
dwFlags: DWORD;
begin
if InternetGetConnectedState(@dwFlags, 0) then
begin
if (dwFlags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then
ShowMessage('Modem Connection')
else
if (dwFlags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
ShowMessage('LAN Connection')
else
if (dwFlags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
ShowMessage('Connection thru Proxy')
else
if (dwFlags and INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE then
ShowMessage('Local system in offline mode')
else
if (dwFlags and INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED then
ShowMessage('Valid connection exists, but might or might not be connected')
end
else
ShowMessage('Not Connected. Try to connect and risk of being prompted to dial into another Internet Service Provider.');
end;
看起來它可以通過這裏所描述的方法來完成:http://www.csharphelp.com/archives3/archive499.html
1用於鏈接到C#源。 – CodeAndCats 2009-01-26 06:29:09
調用InternetGetConnectedState
功能。這knowledgebase article解釋如何做到這一點。
哇,我做了雙重考慮,當我看到這個答案多少支持了。我不確定這是否適用於我的情況,但不。基本上我的路由器保持斷開連接,如果斷開連接,我想使用X10命令將其關閉並重新打開。 – CodeAndCats 2009-01-26 21:41:55