Visual Basic:如果 IP 等于 "String"

Visual Basic: If IP equals "String"

这是我第一次编码,所以请原谅我的无知。我正在尝试制作一个简单的程序来检查我的 IP,如果我的 IP = "My Real 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", "") 

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

我运行你的程序,发现虽然在控制台应用程序中,GetIP 生成的 IP 看起来只是一个 IP,但它实际上是一个末尾带有“& vbLf”标记的 IP。这将意味着您的比较总是会失败。

为了解决这个问题,使用 String.Replace 从 GetIP 生成的字符串中删除 vbLf,如下所示:

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

仅供参考,我通过将变量设置为 GetIP() 的结果并在调试期间检查其内容来发现这一点。

试试这个,而不是检查您的 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

希望对你有所帮助......