2009-12-22 48 views
3

我正在編寫一個應用程序,該應用程序將用於定期上/下網絡連接的移動環境中。如何檢查特定網絡是否可用?檢查網絡可用性VB.net

回答

5

嘗試NetworkInterface.GetIsNetworkAvailable

表示任何網絡連接是否可用。

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

+0

有沒有更快的方法來做到這一點?這個特定的調用相對較慢,並導致我正在處理的移動應用程序出現性能問題。 (我將它設計成在每次交互之前運行 - 所以它運行了很多)我的設備有兩個網絡設備 - 如果我能找到一種方法來檢查我關心的一個適配器,至少在理論上它將是50%更快。任何人都知道如何做到這一點? – Jeff 2013-02-15 15:12:59

3

,看是否有網絡可用時,你可以使用VB.NET My命名空間:

My.Computer.Network.IsAvailable 

,我猜是安德魯的回答NetworkInterface屬性的抽象。要查看是否可以使用可用的網絡訪問特定服務器,可以使用

My.Computer.Network.Ping(host name or IP address, or a System.Uri) 
0

我喜歡挖掘舊線程!我的解決方案是使用DNS進行測試。通過這種方式,您可以測試xxx網絡中的特定名稱,以確定您是否在內部/外部。嵌套的try語句顯示了這個概念。

Imports System.Net 

Module Networker 

Dim Online_Status As Boolean = vbFalse 
Dim InsideJoeNetwork As Boolean = vbFalse 
Dim CurrentJoeIPAddress As New IPHostEntry 



Public ReadOnly Property GetOnlineStatus() As String 
    Get 
     Return Online_Status 
    End Get 

End Property 



Public ReadOnly Property InsideJoeNet() As String 
    Get 
     Return InsideJoeNetwork 
    End Get 

End Property 



Sub Initialize() 
    Set_Online_Status() 

End Sub 



Public Sub Set_Online_Status() 

    If My.Computer.Network.IsAvailable Then 
     Try 
      Dim DNSTest As IPHostEntry = Dns.GetHostEntry("google.com") 
      If DNSTest.AddressList.Length > 0 Then 
       Online_Status = True 
       Detect_Joe_Network() 
      Else : Online_Status = False 

      End If 

     Catch ex As System.Net.Sockets.SocketException 

      Online_Status = False 

     End Try 
    End If 

End Sub 



Public Sub Detect_Joe_Network() 

    If Online_Status = True Then 

     Dim JoeIP As IPHostEntry = New IPHostEntry() 

     Try 
      JoeIP = Dns.GetHostEntry("laptop") 
      If JoeIP.AddressList.Length > 0 Then 

       InsideJoeNetwork = True 
       CurrentJoeIPAddress = JoeIP 
       'MessageBox.Show(JoeIP.HostName.ToString(), "JoeIP", MessageBoxButtons.OK, MessageBoxIcon.Information) 
      End If 
     Catch ex As Sockets.SocketException 

      Try 
       JoeIP = Dns.GetHostEntry("laptop.exampledomain.com") 
       If JoeIP.AddressList.Length > 0 Then 

        InsideJoeNetwork = False 
        CurrentJoeIPAddress = JoeIP 
        ' MessageBox.Show(JoeIP.HostName.ToString(), "JoeIP", MessageBoxButtons.OK, MessageBoxIcon.Information) 
       End If 
      Catch ey As Sockets.SocketException 

      End Try 
     End Try 
    End If 

End Sub 

End Module