【问题标题】:Comparing IP strings doesn't work比较 IP 字符串不起作用
【发布时间】:2014-04-03 19:20:21
【问题描述】:

让我先从程序试图完成的任务开始,然后再开始解决我的问题。我正在开发一个程序,该程序每 5 到 10 秒(尚未实现)检查一次,看看你的 VPN 是否已经放弃了我这样做的方式,让用户在启动 VPN 之前输入 IP,然后他们启动VPN,它会检查它是否发生变化。我的问题是,当我比较两个字符串时,即使它们相同,程序仍然存在它们是不同的。

Imports System.Net
Imports System.IO

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LbIP.Text = GetIP()
    End Sub

    Function GetIP() As String
        Dim IP As New WebClient
        Return IP.DownloadString("http://icanhazip.com/")
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If GetIP() = TextBox1.Text Then
            Label1.Text = "VPN DROPPED"
        Else
            Label1.Text = "Your Good"
        End If
    End Sub
End Class

【问题讨论】:

  • 你试过调试这个吗?您正在将用户输入与网站源字符串进行比较。你怎么能指望他们是平等的?
  • Filburt 我有,但还是不行,你自己试试
  • 所以你坚持调试GetIP()的返回值和TextBox1.Text的属性值匹配但相等比较产生假?我尝试了该服务,它返回一个 IPv6 地址 - 这是您期望并在您的 TextBox 中输入的吗?
  • can i haz ip 应该返回一个 IPv4 地址
  • 据我所知,IPv4 是通过http://ipv4.icanhazip.com/提供的

标签: vb.net string ip compare vpn


【解决方案1】:

DownloadString 将返回字符串末尾带有 \n 的 IP 地址。您需要删除它并进行比较。

示例解决方法

  If GetIP().Replace("\n","") = TextBox1.Text Then
            Label1.Text = "VPN DROPPED"
        Else
            Label1.Text = "Your Good"
 End If

【讨论】:

  • 刚刚测试过,还是不行。我尝试用 E 替换 "" 但它没有显示 E
  • 请在此处查看我的屏幕截图。图片网址:i.stack.imgur.com/CchXG.png
  • 它还在为我做这件事link
  • 你不能像我一样进行变量初始化并截取 Visual Studio 调试器的屏幕截图吗(悬停变量名然后显示值并且不隐藏最后一个字符)
  • 对此的反应非常迟,但我正在查看我的旧项目,并使用更新的视觉工作室,感谢 Keizer。
猜你喜欢
  • 2011-09-20
  • 2012-01-22
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多