Visual Basic:如果IP等于" String"

时间:2016-02-12 00:09:21

标签: vb.net ip webclient vpn

这是我第一次编码,所以请原谅我的无知。我试图制作一个简单的程序来检查我的IP,如果我的IP ="我的真实IP",那么它就会采取行动。基本上我想知道我的VPN何时失败,如果确实如此,它会采取一定的任意行动。

Imports System.Net
Module Module1
Function GetIP() As String
    Dim YourIP As New WebClient
    Return YourIP.DownloadString("http://icanhazip.com/")
End Function

Sub Main()
    Console.Write(GetIP)
    If GetIP() = "XX.XXX.XXX.XX" Then
        Console.WriteLine("Works")
    End If
End Sub 
End Module

我在这里找到了一个与我完全相同的问题的人,解决方案是添加了DownloadString" / n"到字符串的末尾,你必须基本上做

GetIP().Replace("/n", "") 

删除它,但该解决方案对我不起作用。

2 个答案:

答案 0 :(得分:1)

试试这个,而不是检查你的IP(可能会改变),ping一个已知的地址,就像这样....

Module Module1

Sub Main()
    Try
        If My.Computer.Network.Ping("www.google.co.uk", 1000) Then
            MsgBox("Server pinged successfully.")
        Else
            MsgBox("Ping request timed out.")
        End If
    Catch ex As Exception
        MsgBox("Network is down.")
    End Try

End Sub

End Module
希望有帮助.....

答案 1 :(得分:0)

我运行你的程序并发现尽管在控制台应用程序中看起来像GetIP生成的IP只是一个IP,它实际上是一个带有&的IP。 vbLf'标记在最后。这意味着您的比较将始终失败。

要解决此问题,请使用String.Replace从GetIP生成的字符串中删除vbLf,如下所示:

 If GetIP().Replace(vbLf, String.Empty) = "XX.XXX.XXX.XX" Then
     Console.WriteLine("Works")
 End If

仅供参考,我通过将一个变量设置为GetIP()的结果并在调试期间检查它的内容来找到它。