2

我需要应用 IP 地址的范围验证,为此我使用了 http://www.allredroster.com/iptodec.htm

http://javascript.about.com/library/blipconvert.htm

    //JAVASCRIPT CODE
    function dot2num(dot) {
        var d = dot.split('.');
        return ((((((+d[0])*256)+(+d[1]))*256)+(+d[2]))*256)+(+d[3]);
    }

    //C# CODE SERVER SIDE
    System.Net.IPAddress ipAdd;
    if (System.Net.IPAddress.TryParse(ipAddress, out ipAdd))
        return ipAdd.Address;

但是,在客户端返回的值与我在服务器端使用 IPAddress 类得到的值完全不同。

4

3 回答 3

1

将以下函数用于 Javascript 怎么样?

function num2dot(num) {
    var d = num%256;
    for (var i = 3; i > 0; i--) {
        num = Math.floor(num/256);
        d = num%256 + '.' + d;
    }
    return d;
}

如果您对哪个函数返回正确的值有疑问,可以在http://www.ipaddressguide.com/ip中输入 IP 地址并进行验证。

如果您需要进一步的帮助,请告诉我。

于 2013-02-27T11:40:50.933 回答
0

我会阅读有关该主题的http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/9d568a3e-9fbf-4acb-92fc-ff629cd8653f 。如果输入不是很具体, System.Net.IPAddress.TryParse 可能会抛出一些奇怪的结果

于 2013-02-26T05:18:06.513 回答
0

最后,我最终在服务器端做了同样的事情,因为 IPAddress.Address 没有返回正确的结果,我不知道为什么,但是有人可以告诉我为什么会这样吗?

//WORKING CODE NOW

//JAVASCRIPT CODE
function dot2num(dot) {
    var d = dot.split('.');
    return ((((((+d[0])*256)+(+d[1]))*256)+(+d[2]))*256)+(+d[3]);
}

//C# CODE SERVER SIDE
function dot2num(dot)
{
   var ip = IPAddress.Parse(args.Value);
   var ipBytes = ip.GetAddressBytes();
   double ipAddress = ipBytes[0] * Math.Pow(256, 3) + ipBytes[1] * Math.Pow(256, 2) + ipBytes[2] * Math.Pow(256, 1) + ipBytes[3];
   return ipAddress;   
}
于 2013-02-26T15:49:49.583 回答