如何用程序实现可变长子网掩码的计算呢?
我是一点头绪都没有
一、利用子网数来计算
在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。
1)将子网数目转化为二进制来表示
2)取得该二进制的位数,为 N
3)取得该IP地址的类子网掩码,将其主机地址部分的的前N位置 1 即得出该IP地址划分子网的子网掩码。
如欲将B类IP地址168.195.0.0划分成27个子网:
1)27=11011
2)该二进制为五位数,N = 5
3)将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到255.255.248.0,即为划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。 二、利用主机数来计算<BR>1)将主机数目转化为二进制来表示
2)如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为 N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位
3)使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。
如欲将B(c)类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台(17
1) 700=1010111100<BR>2)该二进制为十位数,N = 10(1001
)将该B类地址的子网掩码255.255.0.0的主机地址全部置 1,得到255.255.255.255,然后再从后向前将后10位置0,即为:11111111.11111111.11111100.00000000,即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。
朋友告诉我说是这样的算法,可是我一点头绪都没有,怎样用vb实现呢?
谁能给我个例子?哪怕是个框架也好!!!!!
我是一点头绪都没有
一、利用子网数来计算
在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。
1)将子网数目转化为二进制来表示
2)取得该二进制的位数,为 N
3)取得该IP地址的类子网掩码,将其主机地址部分的的前N位置 1 即得出该IP地址划分子网的子网掩码。
如欲将B类IP地址168.195.0.0划分成27个子网:
1)27=11011
2)该二进制为五位数,N = 5
3)将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到255.255.248.0,即为划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。 二、利用主机数来计算<BR>1)将主机数目转化为二进制来表示
2)如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为 N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位
3)使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。
如欲将B(c)类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台(17
1) 700=1010111100<BR>2)该二进制为十位数,N = 10(1001
)将该B类地址的子网掩码255.255.0.0的主机地址全部置 1,得到255.255.255.255,然后再从后向前将后10位置0,即为:11111111.11111111.11111100.00000000,即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。
朋友告诉我说是这样的算法,可是我一点头绪都没有,怎样用vb实现呢?
谁能给我个例子?哪怕是个框架也好!!!!!
ip地址的前5位置一...
3)将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到255.255.248.0,即为划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。
这里的置1指的是?程序我只是写到第二步了..转换并获取都没问题..
Private Sub Command1_Click()
Dim a, b, c, d, e As Long
Dim ziwang_num As Long
Dim ziwang_zhuji As Long
'下面两句就是获取输入的子网数量,然后转为二进制数,并且获取其长度
ziwang_num = DEC_to_BIN(Val(Text6.Text))
ziwang_num = Len(CStr(ziwang_num))
End SubPublic Function DEC_to_BIN(Dec As Long) As String
'将10进制转换为二进制
DEC_to_BIN = ""
Do While Dec > 0
DEC_to_BIN = Dec Mod 2 & DEC_to_BIN
Dec = Dec \ 2
Loop
End Function
但字符串应该怎样去操作255.255.255.255呢?
这其中的"."需要如何处理呢?)请不要嫌俺罗嗦..............
合法的广播地址就是主机的网络地址加上最大的主机号。网络地址通过机器的ip地址与子网掩码按位与得出,我们以ip地址为10.78.202.175 子网掩码为255.255.255.0为例来分析一下上面的几个概念
问题1:子网掩码为255.255.255.0的子网内可以有多少台主机IP
首先将这两个东西换算成二进制代码
ip地址:00001010.01001110.11001010.10101111
子网掩码:11111111.11111111.11111111.00000000
按位与之AND后得出网络地址:00001010.01001110.11001010.0000000,十进制表示就是10.78.202.0,这个网络地址理论上可以有255台主机,但是除去网络地址0和广播地址255之后,实际上只能有253台主机,那么我们可以知道175就是你这台机器的主机号,广播地址就是最大的主机号,也就是10.78.202.255。
问题1:子网掩码为255.255.255.192的子网内可以有多少台主机IP
将子网掩码255.255.255.192换算成二进制代码
子网掩码:11111111.11111111.11111111.11000000
子网掩码为1的部分是网络地址,0的部分是我们可以分配的IP的地址,也就是说我们的地址范围是00000000~00111111,出去网络地址和广播地址,我的有效地址范围是1~62