ネットワーク セグメントの開始および終了 IP アドレスを検索します。例: ネットワーク セグメント (192168.1.5/24)、そのサブネット マスクは 24 に従って分割されます: 11111111.11111111.11111111.00000000(255.255.255.0) 説明: IP アドレスは次のとおりです。 32 ビット、ネットワーク セグメントを分割する場合、24 は前に 24 個の 1、後ろに 8 個の 0 があることを意味します。開始 IP アドレスのアルゴリズムは、192.168.1.5 のバイナリとサブネット マスクのバイナリの AND 演算です。 IP アドレスを終了するアルゴリズムは、まずサブネット マスクの 2 進数を反転し、次に 2 進数 192.168.1.5 との「OR」演算を実行します 実際のアプリケーションでは、取得されるのはネットワーク アドレスとブロードキャストですアドレス、ネットワーク アドレス + 1 が最初のホスト アドレス、ブロードキャスト アドレス -1 が最後のホスト アドレスです。
function Mask2bin($n) { $n = intval($n); if($n<0||$n>32) die('エラーサブマスク');
return str_repeat("1", $n).str_repeat("0",32-$n);
}
function revBin($s)
{
$p=array('0','1',' 2');
$r=array('2','0','1');
return str_replace($p,$r,$s);
}
function startIp($str,$bSub )
{
$bIp = decbin($str);
$bIp = str_pad($bIp,8,"0",STR_PAD_LEFT);
$sIp = binding($bIp & $bSub);
return $sIp;
}
関数 endIp($str,$bSub)
{
$bIp = decbin($str);
$bIp = str_pad($bIp,8,"0",STR_PAD_LEFT);
$eIp = binding($bIp | revBin($bSub));
return $eIp;
}
$ip = array('192','168','1','5');//から取得できる IP アドレスを設定します。フォーム、これはデモ用です
$mask = '24' //マスクを設定します
$bSub = Mask2bin($mask) //サブネットマスクをバイナリに変換します
$mask = array();
$ Mask[] = substr($bSub,"0",8); //サブネットマスクを 8 ビットごとに分割します
$mask[] = substr($bSub,"8",8);
$mask[] = substr ($bSub,"16",8);
$mask[] = substr($bSub,"24",8);
echo '
マスク: |
< ;td>
';
for ($i=0;$i{
echo binding($mask[$i]);
if ( $i!=3)
echo ".";
}
echo '
ネットワーク アドレス: |
';
for ($i= 0 ;$i {
echo startIp($ip[$i],$mask[$i]);
if($i!=3)
echo ".";
}
echo '
|
最初に利用可能: |
';
($i=0;$i< ; 3;$i++)
{
echo startIp($ip[$i],$mask[$i]);
echo ".";
}
$ip_4 = startIp($ip[3],$mask[ 3 ]);
echo ++$ip_4;
echo ' |
< size="2">最終入手可能日: |
';
($i=0;$i< ; 3;$i++)
{
echo endIp($ip[$i],$mask[$i]);
echo ".";
}
$ip_4 = endIp($ip[3],$mask[ 3 ]);
echo --$ip_4;
echo '
|
< size="2">ブロードキャスト アドレス: |
';
for ($i=0;$i< ; 4;$i++)
{
echo endIp($ip[$i],$mask[$i]);
if($i!=3)
echo ".";
}
?>
コードをコピー
|
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |