IP Address to Number在Javascript和c#.net中不同

本文关键字:net Javascript Address to Number IP | 更新日期: 2023-09-27 18:01:20

我需要应用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类。

IP Address to Number在Javascript和c#.net中不同

如何使用以下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地址并验证它。

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

我会阅读http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/9d568a3e-9fbf-4acb-92fc-ff629cd8653f关于这个主题的文章。如果输入不是很具体

,那么System.Net.IPAddress.TryParse会抛出一些奇怪的结果

最后,我在服务器端做了与IPAddress相同的事情。地址没有返回正确的结果,我不知道为什么,但是有人能告诉我为什么吗?

//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;   
}