Проверьте доступность сети VB.net - PullRequest
3 голосов
/ 22 декабря 2009

Я пишу приложение, которое будет использоваться в мобильной среде, где подключение к сети будет регулярно увеличиваться / уменьшаться. Как проверить, доступна ли конкретная сеть?

Ответы [ 3 ]

5 голосов
/ 22 декабря 2009

Попробуйте NetworkInterface.GetIsNetworkAvailable:

Указывает, доступно ли какое-либо сетевое соединение.

Сетевое соединение считается доступным, если какой-либо сетевой интерфейс помечен как «вверх» и не является петлевым или туннельным интерфейсом.

3 голосов
/ 22 декабря 2009

Чтобы узнать, доступна ли какая-либо сеть, вы можете использовать пространство имен VB.NET My:

My.Computer.Network.IsAvailable

, который я бы предположил, является абстракцией свойства NetworkInterface в ответе Эндрю. Чтобы узнать, можете ли вы использовать доступную сеть для доступа к определенному серверу, вы можете использовать

My.Computer.Network.Ping(host name or IP address, or a System.Uri)
0 голосов
/ 20 марта 2014

Я люблю выкапывать старые темы! Моим решением было проверить с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...