2012-01-10 4 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 

Я решил проверить это на моем собственном компьютере, изменив свой шлюз по умолчанию (тем самым делая его, кажется, как будто я потерял связь). Но я понял, что код все еще показал, что я подключен. Поэтому я думаю, что это только проверка возможности подключения интерфейса, который в этом случае является моим соединением с маршрутизатором (это правда, я подключен к маршрутизатору).

Итак, вопрос: Как проверить, что компьютер пользователя фактически подключен к Интернету? Я прочитал статью What is the best way to check for Internet connectivity using .NET?, но это на C#, и я этого не понимаю.

+1

@CodyGray. Я ценю ваш комментарий, но теперь я изучаю программирование. Я не профессионал, такое оскорбление не заслуживает. Вам не кажется? –

+0

Не совсем, нет. C# и VB.NET не так уж и отличаются. Если вы изучаете один, вы должны быть в состоянии выяснить другой. Это был не сложный код для перевода, и простой поиск Google стал бы одним из многих автоматизированных переводчиков. Если автоматический переводчик может это сделать, вы наверняка сможете сделать это с небольшим количеством мыслей и усилий. Я не думаю, что кого-то следует поощрять быть беспомощным, только они учатся или программируют более 25 лет. –

+0

@CodyGray. Спасибо, в любом случае. –

ответ

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 вы использовали проверки, является ли какой-либо сетевое подключение доступно или нет - не Подключение к Интернету.

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

+0

Спасибо за ответ. Я попробую и дам короткую обратную связь. –

+0

Я попытался использовать предложенный вами код, но у меня возникла ошибка, говорящая мне, что «Statement не может появиться внутри метода». Я предполагаю, что это означает, что мне нужно будет создать отдельный файл класса и вызвать его в моем методе? Пожалуйста, простите вопросы, я просто пытаюсь учиться. Я все еще хочу иметь возможность отображать изображения на основе значения RETURN, поэтому, пожалуйста, помогите мне включить свой код в мой. Благодарю. –

+0

@ Kismet: Да, приведенный выше код - это отдельный метод, который вы должны вложить в свой собственный класс (например, называется «NetworkUtilities»). Затем вы можете вызвать 'If NetworkUtilities.CheckForInternetConnection() Then' вместо вашей' If NetworkInformation.NetworkInterface.GetIsNetworkAvailable Then'. –

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

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 
Смежные вопросы