A类网络的IP地址范围为:1001-126255255254;B类网络的IP地址范围为:128101-191255255254;C类网络的IP地址范围为:192011-223255255254。
IP地址是适合大型网和小型网的。地址是自定义的,它的最高位定义地址的类型。A类地址支持多个主机在一个网:最高位为0,跟随有7Bit网络部分和24Bit主机部分。在B类地址,最高位是非0,跟随有14Bit网络号和16Bit主机号。
C类地址以110开始,跟随有21Bit网络号和8Bit主机号。按常规IP地址由加点的字符给出,地址由四部分10进制数组成,用点作分隔。
IP分组的转发规则
路由器仅根据网络地址进行转发。当IP数据包经由路由器转发时,如果目标网络与本地路由器直接相连,则直接将数据包交付给目标主机,这称为直接交付;否则,路由器通过路由表查找路由信息,并将数据包转交给指明的下一跳路由器,这称为间接交付。
路由器在间接交付中,若路由表中有到达目标网络的路由,则把数据包传送给路由表指明的下一跳路由器;如果没有路由,但路由表中有一个默认路由,则把数据包传送给指明的默认路由器;如果两者都没有,则丢弃数据包并报告错误。
这两个方法是我一直在用的,都可正常获取到IP地址和Mac地址。
/// <summary>
/// 获取IP地址
/// </summary>
/// <returns>IP地址</returns>
public string GetLocalIP()
{
try
{
SystemNetNetworkInformationNetworkInterface[] nics = SystemNetNetworkInformationNetworkInterfaceGetAllNetworkInterfaces();
foreach (SystemNetNetworkInformationNetworkInterface adapter in nics)
{
if (adapterNetworkInterfaceType == SystemNetNetworkInformationNetworkInterfaceTypeEthernet)
{
var mac = adapterGetPhysicalAddress();
SystemNetNetworkInformationIPInterfaceProperties ip = adapterGetIPProperties();
SystemNetNetworkInformationUnicastIPAddressInformationCollection ipCollection = ipUnicastAddresses;
foreach (SystemNetNetworkInformationUnicastIPAddressInformation ipadd in ipCollection)
{
if (ipaddAddressAddressFamily == SystemNetSocketsAddressFamilyInterNetwork)
{
return ipaddAddressToString();
}
}
}
}
}
catch { }
return null;
}
/// <summary>
/// 获取本机MAC地址
/// </summary>
/// <returns>本机MAC地址</returns>
public string GetMacAddress()
{
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mcGetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
mac = mo["MacAddress"]ToString()Replace(":", "")Replace("-", "")ToUpper();
break;
}
}
moc = null;
mc = null;
return mac;
}
以上就是关于如何获取ip地址全部的内容,包括:如何获取ip地址、C#中如何得到机器的IP地址、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)