Previous topicNext topic
Help > 开发指南 > 实用小功能 >
获得外网IP地址

我们可以利用一些网络上现有的网络服务来获得当前本机连接外网的IP地址。使用非常方便,但是有一个缺点,那就是返回的结果取决于别人提供的服务,如果哪天依赖的外部提供IP查询的网络服务停止了之后,我们的代码就会失效了。使用此代码请注意评估风险,经常验证获取结果。

Vb.Net
Dim strIP As String = NetHelp.NetGet("http://pv.sohu.com/cityjson")
Dim regex = New System.Text.RegularExpressions.Regex("(\d+\.\d+\.\d+\.\d+)")
Dim match = regex.Match(strIP)

If match.Success Then
    Dim ip = match.Groups(0).Value
    Proj.MsgDebug.Add(ip)
End If

C#
string strIP=NetHelp.NetGet("http://pv.sohu.com/cityjson");
var regex = new System.Text.RegularExpressions.Regex(@"(\d+\.\d+\.\d+\.\d+)");
var match = regex.Match(strIP);
if (match.Success)
{
    var ip = match.Groups[0].Value;
    Proj.MsgDebug.Add(ip);
}

如果想做成一个自定义函数,可以考虑

Vb.Net
If Proj.Vars("NetIpAddress") IsNot Nothing Then
    Return Proj.Vars("NetIpAddress").ToString()
Else
    Dim strIP As String = NetHelp.NetGet("http://pv.sohu.com/cityjson")
    Dim regex = New System.Text.RegularExpressions.Regex("(\d+\.\d+\.\d+\.\d+)")
    Dim match = regex.Match(strIP)
    
    If match.Success Then
        Dim ip = match.Groups(0).Value
        Proj.Vars("NetIpAddress") = ip
        Return ip
    End If
    
    Return ""
End If

C#
if(Proj.Vars["NetIpAddress"]!=null)
{
    return Proj.Vars["NetIpAddress"].ToString();
}
else
{
    //查询外网IP
    string strIP=NetHelp.NetGet("http://pv.sohu.com/cityjson");
    var regex = new System.Text.RegularExpressions.Regex(@"(\d+\.\d+\.\d+\.\d+)");
    var match = regex.Match(strIP);
    if (match.Success)
    {
        var ip = match.Groups[0].Value;
         //将结果保存到变量中
        Proj.Vars["NetIpAddress"]=ip;
        return ip;
    }
    return "";
}