C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ネットワークアドレス算出


(過去ログ 155 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■89842 / inTopicNo.1)  ネットワークアドレス算出
  
□投稿者/ Ante (24回)-(2019/01/08(Tue) 10:15:53)

分類:[C#] 

お世話になります。

C#でIPアドレスと、サブネットマスクを引数にネットワークアドレスを算出したいです。

下記のようにWebで計算フォームはありますが、C#で算出する関数が転がってれば流用したいです。
知っていたらご教示ください。

https://note.cman.jp/network/subnetmask.cgi

http://www.cityjp.com/javascript/network/network.html


引用返信 編集キー/
■89843 / inTopicNo.2)  Re[1]: ネットワークアドレス算出
□投稿者/ Hongliang (736回)-(2019/01/08(Tue) 11:17:34)
標準ライブラリには存在しなかった気がします。
NuGetでNetwork Addressなどで検索するとそれらしきライブラリも見つかりますね。
引用返信 編集キー/
■89844 / inTopicNo.3)  Re[1]: ネットワークアドレス算出
□投稿者/ WebSurfer (1724回)-(2019/01/08(Tue) 11:24:55)
No89842 (Ante さん) に返信

c# ip subnet calculator などをキーワードにググるといろいろヒットしますが、
それらの記事は参考になりませんか?
引用返信 編集キー/
■89847 / inTopicNo.4)  Re[2]: ネットワークアドレス算出
□投稿者/ Ante (25回)-(2019/01/08(Tue) 12:24:16)
お早い回答大変ありがとうございました。

参考にさせていただきまして、下記のロジックを使います。

using System.Net;

        /// <summary>
        /// ネットワークアドレス算出
        /// </summary>
        /// <param name="address">IPアドレス</param>
        /// <param name="subnetMask">サブネットマスク</param>
        /// <returns></returns>
        public static IPAddress GetNetworkAddress(this IPAddress address, IPAddress subnetMask) {
            byte[] ipAdressBytes = address.GetAddressBytes();
            byte[] subnetMaskBytes = subnetMask.GetAddressBytes();

            if (ipAdressBytes.Length != subnetMaskBytes.Length)
                throw new ArgumentException("Lengths of IP address and subnet mask do not match.");

            byte[] broadcastAddress = new byte[ipAdressBytes.Length];
            for (int i = 0; i < broadcastAddress.Length; i++) {
                broadcastAddress[i] = (byte)(ipAdressBytes[i] & (subnetMaskBytes[i]));
            }
            return new IPAddress(broadcastAddress);
        }


// 使い方
            IPAddress mainIp = IPAddress.Parse("192.168.0.145");
            IPAddress subnetIp = IPAddress.Parse("255.255.252.0");
            IPAddress networkIp;

            networkIp = GetNetworkAddress(mainIp, subnetIp);

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -