2012-01-10 248 views
4

我需要我的應用程序來檢查我的用戶計算機上的互聯網連接。如果有,則顯示圖像,如果不存在,則顯示不同的圖像。下面是我用得到這個工作的代碼:檢查互聯網連接

Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded 

    If NetworkInformation.NetworkInterface.GetIsNetworkAvailable Then 
     Dim bi1 As New BitmapImage 
     bi1.BeginInit() 
     bi1.UriSource = New Uri("Images\greenbar.png", UriKind.Relative) 
     bi1.EndInit() 
     Image2.Source = bi1 

    Else 
     Dim bi2 As New BitmapImage 
     bi2.BeginInit() 
     bi2.UriSource = New Uri("Images\redbar.png", UriKind.Relative) 
     bi2.EndInit() 
     Image2.Source = bi2 
     MessageBox.Show("INTERNET CONNECTION NOT DETECTED") 
     MessageBox.Show("You must be connected to the internet to use some aspects of this application.") 
     MessageBox.Show("Please re-establish connection to the Internet and try again, thank you.") 
     Me.Close() 

    End If 
End Sub 

,我決定改變我的默認網關(從而使其看起來好像我失去了連接),以測試這是我自己的電腦上。但是我意識到代碼仍然顯示我已連接。所以我認爲它只是檢查接口的連接性 - 在這種情況下,我是連接到路由器(這是事實,我已連接到路由器)。

所以,問題:如何檢查用戶的PC是否實際連接到互聯網?我閱讀了文章What is the best way to check for Internet connectivity using .NET?,但它是用C#編寫的,我不明白這一點。

+1

@CodyGray。感謝您的評論,但我現在正在學習編程。我不是職業球員,這樣的侮辱是不應該的。你不覺得嗎? – 2012-01-10 08:39:21

+0

不是真的,沒有。 C#和VB.NET並非完全不同。如果你正在學習一個,你應該能夠找出另一個。這不是複雜的代碼翻譯,而且一個簡單的Google搜索就會成爲衆多自動翻譯人員中的一員。如果一個自動翻譯者可以做到這一點,當然你應該可以通過一些想法和努力來做到這一點。我不認爲有人應該鼓勵他們無論是剛剛學習還是已經編程了25年以上都無能爲力。 – 2012-01-10 08:42:07

+0

@CodyGray。不管怎麼說,還是要謝謝你。 – 2012-01-10 10:15:04

回答

6

可以使用this tool到C#轉換爲VB.NET或反之亦然:

Public Shared Function CheckForInternetConnection() As Boolean 
    Try 
     Using client = New WebClient() 
      Using stream = client.OpenRead("http://www.google.com") 
       Return True 
      End Using 
     End Using 
    Catch 
     Return False 
    End Try 
End Function 

順便說一句,你使用任何檢查網絡連接是否可用與否NetworkInterface.GetIsNetworkAvailable方法 - 互聯網連接。

如果任何網絡接口被標記爲「up」並且不是環回或隧道接口,則認爲網絡連接可用。

+0

感謝您的回覆。我會嘗試並儘快提供反饋。 – 2012-01-10 08:40:57

+0

我試圖使用您建議的代碼,但是我得到一個錯誤,告訴我「語句不能出現在方法中」。我假設這意味着我將不得不創建單獨的類文件並在我的方法中調用它?請原諒這些問題,我只是想學習。我仍然希望能夠根據RETURN值顯示圖像,所以請幫助我將您的代碼合併到我的代碼中。謝謝。 – 2012-01-10 08:56:31

+0

@Kismet:是的,上面的代碼是一個獨立的方法,您應該嵌入到它自己的類(例如稱爲「NetworkUtilities」)中。然後你可以調用'如果NetworkUtilities.CheckForInternetConnection()Then',而不是'如果NetworkInformation.NetworkInterface.GetIsNetworkAvailable Then'。 – 2012-01-10 09:06:25

2

或者使用此代碼

If My.Computer.Network.IsAvailable Then 
    MsgBox("Computer is connected.") 
Else 
    MsgBox("Computer is not connected.") 
End If 
1
If My.Computer.Network.Ping("www.Google.com") Then 
... 
End If 
+0

謝謝,真的幫助我。 – Ezi 2014-04-09 15:19:25

0

你可以使用this,這應有助於你出去VB & C#版本:

Public Function IsConnectionAvailable() As Boolean 
    ' Returns True if connection is available 
    ' Replace www.yoursite.com with a site that 
    ' is guaranteed to be online - perhaps your 
    ' corporate site, or microsoft.com 
    Dim objUrl As New System.Uri("http://www.google.com/") 
    ' Setup WebRequest 
    Dim objWebReq As System.Net.WebRequest 
    objWebReq = System.Net.WebRequest.Create(objUrl) 
    objWebReq.Proxy = Nothing 
    Dim objResp As System.Net.WebResponse 
    Try 
     ' Attempt to get response and return True 
     objResp = objWebReq.GetResponse 
     objResp.Close() 
     objWebReq = Nothing 
     Return True 
    Catch ex As Exception 
     ' Error, exit and return False 
     objResp.Close() 
     objWebReq = Nothing 
     Return False 
    End Try 
End Function 
0
Public Function IsConnectionAvailable() As Boolean 
    ' Returns True if connection is available 
    ' Replace www.yoursite.com with a site that 
    ' is guaranteed to be online - perhaps your 
    ' corporate site, or microsoft.com 
    Dim objUrl As New System.Uri("http://www.yoursite.com/") 
    ' Setup WebRequest 
    Dim objWebReq As System.Net.WebRequest 
    objWebReq = System.Net.WebRequest.Create(objUrl) 
    Dim objResp As System.Net.WebResponse 
    Try 
     ' Attempt to get response and return True 
     objResp = objWebReq.GetResponse 
     objResp.Close() 
     objWebReq = Nothing 
     Return True 
    Catch ex As Exception 
     ' Error, exit and return False 
     objResp.Close() 
     objWebReq = Nothing 
     Return False 
    End Try 


'Here’s how you might use this function in your application: 

If IsConnectionAvailable() = True Then 
    MessageBox.Show("You are online!") 
End If 
0

下面將檢查網絡連接可用性和Int ernet連接:

If My.Computer.Network.IsAvailable Then 

    Try 
     If My.Computer.Network.Ping("www.Google.com") Then 
      Infolabel.Text = "Computer is connected to the internet" 
     Else 
      Infolabel.Text = "Computer is not connected to the internet" 
     End If 
    Catch 

    End Try 

Else 
    Infolabel.Text = "Computer is not connected to the internet" 
End If