如何用程序实现可变长子网掩码的计算呢?
我是一点头绪都没有
一、利用子网数来计算
在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。
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&lt;8。如果大于254,则 N&gt;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.   

    我用程序实现的过程中,按照第一种方法,很不理解的是第3句.
    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
      

  2.   

    二、利用主机数来计算1)将主机数目转化为二进制来表示。(这个没问题)2)如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位。(这里的注意去掉保留的两个ip地址,这里指的是什么呢?是理论ip地址是256个吧?这句问题也不大,取得二进制位数,len(cstr(二进制变量))这样就可以了 )3)使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。(使用255.255.255.255,这里全部转换为2进制数吧.(使用255.255.255.255来将该类IP地址的主机地址位数全部置1)这句还是不太懂,是不是设置成1了就成11111111.11111111.11111111.11111111 ,这样的一个二进制数了? 然后再从后向前将N位全部设置为0,这里的变量操作要转换成string类型的吧,做字符串操作?
    但字符串应该怎样去操作255.255.255.255呢?
    这其中的"."需要如何处理呢?)请不要嫌俺罗嗦..............
      

  3.   

    for ipv4:
    合法的广播地址就是主机的网络地址加上最大的主机号。网络地址通过机器的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