Linux Socket Programming by Example-第三章 IP地址与子网划分
2012-06-25 10:46
357 查看
本章主要是介绍IP地址的子网划分。
公式: (HOST IP) & (NET MASK) = (NET IP)
IP地址按子网大小分为以下几类:
开始 结束 网络地址位 主机地址位
A 0.0.0.0 127.255.255.255 7 24
B 128.0.0.0 191.255.255.255 14 16
C 192.0.0.0 223.255.255.255 21 8
D 224.0.0.0 239.255.255.255 28 N/A
E 240.0.0.0 247.255.255.255 27 N/A
注意:
1. 0和255通常不用于设置IP地址。
2. 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
3. 127.X.X.X是保留地址,用做循环测试用的。
4. 172.16.0.0—172.31.255.255是私有地址
5. 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。
6. 92.168.X.X是私有地址
7. D类地址用于广播,通常不用于设置主机IP。
8. E类地址保留,仅作实验和开发用
我们常用的局域网默认地址192.168.0.0 属于C类地址。
接下来介绍了几个函数:
unsigned long inet_addr(const char *string);
作用:将IP地址从字符串格式转化为整数格式(网络序)
使用方法:
adr_inet.sin_addr.s_addr = inet_addr("127.0.0.95");
if ( adr_inet.sin_addr.s_addr == INADDR_NONE )
return err;
int inet_aton(const char *string, struct in_addr *addr);
作用:将IP地址从字符串格式转化为整数格式(网络序)
使用方法:
if ( !inet_aton("127.0.0.23",&adr_inet.sin_addr) )
return err;
char *inet_ntoa(struct in_addr addr);
作用:将IP地址从整数格式(网络序)转化为字符串格式
使用方法:
struct sockaddr_in addr; /* Socket Address */
printf("IP ADDR: %s\n",inet_ntoa(addr.sin_addr));
unsigned long inet_network(const char *addr);
作用:将IP地址从字符串格式转化为整数格式(本地序(也就是如果本地机器为
Big-Endian,则转化后的整数也是Big-Endian))
使用方法:
unsigned long net_addr;
net_addr = inet_network("192.168.9.1") & 0xFFFFFF00;
unsigned long inet_lnaof(struct in_addr addr);
作用:将IP地址从字符串格式转化为整数格式(本地序),并去掉子网IP
使用方法:
struct sockaddr_in addr; /* Socket Address */
unsigned long host_id; /* Host ID number */
host_id = inet_lnaof(addr.sin_addr);
unsigned long inet_netof(struct in_addr addr);
作用:将IP地址从字符串格式转化为整数格式(本地序),并去掉主机IP
使用方法:
struct sockaddr_in addr; /* Socket Address */
unsigned long net_id; /* Network ID number */
net_id = inet_netof(addr.sin_addr);
struct in_addr inet_makeaddr(int net,int host);
作用: 通过子网地址与主机地址合成一个网络地址
公式: (HOST IP) & (NET MASK) = (NET IP)
IP地址按子网大小分为以下几类:
开始 结束 网络地址位 主机地址位
A 0.0.0.0 127.255.255.255 7 24
B 128.0.0.0 191.255.255.255 14 16
C 192.0.0.0 223.255.255.255 21 8
D 224.0.0.0 239.255.255.255 28 N/A
E 240.0.0.0 247.255.255.255 27 N/A
注意:
1. 0和255通常不用于设置IP地址。
2. 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
3. 127.X.X.X是保留地址,用做循环测试用的。
4. 172.16.0.0—172.31.255.255是私有地址
5. 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。
6. 92.168.X.X是私有地址
7. D类地址用于广播,通常不用于设置主机IP。
8. E类地址保留,仅作实验和开发用
我们常用的局域网默认地址192.168.0.0 属于C类地址。
接下来介绍了几个函数:
unsigned long inet_addr(const char *string);
作用:将IP地址从字符串格式转化为整数格式(网络序)
使用方法:
adr_inet.sin_addr.s_addr = inet_addr("127.0.0.95");
if ( adr_inet.sin_addr.s_addr == INADDR_NONE )
return err;
int inet_aton(const char *string, struct in_addr *addr);
作用:将IP地址从字符串格式转化为整数格式(网络序)
使用方法:
if ( !inet_aton("127.0.0.23",&adr_inet.sin_addr) )
return err;
char *inet_ntoa(struct in_addr addr);
作用:将IP地址从整数格式(网络序)转化为字符串格式
使用方法:
struct sockaddr_in addr; /* Socket Address */
printf("IP ADDR: %s\n",inet_ntoa(addr.sin_addr));
unsigned long inet_network(const char *addr);
作用:将IP地址从字符串格式转化为整数格式(本地序(也就是如果本地机器为
Big-Endian,则转化后的整数也是Big-Endian))
使用方法:
unsigned long net_addr;
net_addr = inet_network("192.168.9.1") & 0xFFFFFF00;
unsigned long inet_lnaof(struct in_addr addr);
作用:将IP地址从字符串格式转化为整数格式(本地序),并去掉子网IP
使用方法:
struct sockaddr_in addr; /* Socket Address */
unsigned long host_id; /* Host ID number */
host_id = inet_lnaof(addr.sin_addr);
unsigned long inet_netof(struct in_addr addr);
作用:将IP地址从字符串格式转化为整数格式(本地序),并去掉主机IP
使用方法:
struct sockaddr_in addr; /* Socket Address */
unsigned long net_id; /* Network ID number */
net_id = inet_netof(addr.sin_addr);
struct in_addr inet_makeaddr(int net,int host);
作用: 通过子网地址与主机地址合成一个网络地址
相关文章推荐
- Linux Socket Programming by Example-第五章 将IP地址与Socket绑定
- Linux Socket Programming by Example-第二章 IP 地址域 读书笔记
- Linux Socket Programming by Example-第九章 IP与域名
- LINUX SOCKET programming by Example
- Linux Socket Programming by Example-第十八章 实战
- Linux Socket Programming by Example-第四章 确定Socket Domain
- Linux Socket Programming by Example-第六章 基于无连接的UDP通信
- Linux Socket Programming by Example-第七章 TCP通信
- Linux Socket Programming by Example-第八章 TCP通信
- Linux Socket Programming by Example-第一章读书笔记
- Linux Socket Programming by Example-第十章 标准I/O与Socket
- Linux Socket Programming by Example-第十一章 多客户端并发处理
- Linux Socket Programming by Example-第十二章 设置socket参数
- Linux Programming by Example:The Fundamentals(Notes One)
- C Socket Programming for Linux with a Server and Client Example Code
- 手工解析选项参数问题《Linux Programming by Example:The Fundamentals》chapter2,exercise
- C Socket Programming for Linux with a Server and Client Example Code
- IP地址划分类型和子网划分
- 利用DEV-C++ 改造hpc01机上的test_multithread_socket_textsearchbyExampleDoc.cpp
- IP地址及子网划分的好方法