C#

アドレスクラスのチェック

.NETのIPAddressクラスを使ったアドレスクラスの調べ方を考えた。

IPAddressクラスのGetAddressBytes()を使えばアドレスのバイト配列が取得できるのでそれを利用する。
今回はマルチキャストアドレスをターゲットにしてあるが、同様の方法で他のアドレスクラスもチェックできる。


以下のコードを組んで実行した。

using System;        // Console
using System.Net;    // IPAddress

namespace AddressTestProject
{
    class Test
    {
        static void Main()
        {
            IPAddress     address;
            string        addrstr;
            byte[]        addrbytes;

            // IPアドレス入力
            Console.Write("Input IP address -> ");
            addrstr = Console.ReadLine();

            // IPAddress変換
            address       = IPAddress.Parse(addrstr);
            addrbytes    = address.GetAddressBytes();

            // 変換したbyte配列をダンプしてみる
            Console.Write("dump array:");
            for(int i = 0; i < addrbytes.Length; i++)
                Console.Write(addrbytes[i].ToString("X2") + " ");

            // マルチキャストに使えるか検査
            if((addrbytes[0] & 0xF0) == 0xE0) Console.WriteLine("\nMulticast Address.");
            else Console.WriteLine("\nNot Multicast Address.");
        }
    }
}

◆実行結果

Input IP address ->; 239.0.0.1
dump array:     EF 00 00 01
Multicast Address.

マルチキャストアドレスは範囲が224.0.0.0〜239.255.255.255なので、先頭の1バイトの上位4ビットが1110(0xE)であることが条件となる。
先頭の1バイトに対してまず11110000(0xF0)との論理積をとる事で上位4ビットをマスクして取り出せる。
次に1110(0xE0)との比較が一致すればマルチキャストアドレスであると判断できる。

スポンサーリンク
管理人

システムえんじにゃー🐈
趣味はエレキギターなど。作曲したい。
WoWs/プリコネ
記事に関する質問はお気軽にどうぞ。

surface0 (さーふぇす)をフォローする
surface0 (さーふぇす)をフォローする

コメント

タイトルとURLをコピーしました