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

最後に、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 に答える
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 に答える