linux c网络学习总结2(IP地址相关的操作)
2013-01-16 10:54
537 查看
AF_INET Stream Data Structures
struct sockaddr_in {short int sin_family; //使用的协议簇; 值为AF_INET
unsigned short int sin_port; //要使用的端口号,范围是从0 到65535,普通程序使用从1024到65535
struct in_addr sin_addr; //要使用的IP地址结构体,不是点分十进制,是一个数值型
}
struct in_addr在不同的书中可以看到两种格式
格式一
struct in_addr {
unsigned long int s_addr; //32位。使用大端格式存储数据
}
格式二
typedef uint32_t in_addr_t;
struct in_addr {
in_addr_t s_addr; //32位。使用大端格式存储数据,
};
大多数书在讲解的时候才用的是格式一,简单容易记忆,并且是真实的格式(最原始的数据类型)。少数使用格式二,符合POSIX的命名格式,考虑安全和可移植性。(个人观点)
FUNCTIONS
in_addr_t inet_addr(const char* cp)
include: netinet/in.h
return: 成功返回点分十进制ip对应的in_addr_t类型的值,失败返回-1,
description: 将将点分十进制IPv4地址转化为程序可用的IP地址(in_addr_t 数据,转换为网络上可以传输的数据存储格式)
parameter:
cp:点分十进制ip格式字符串的首地址。eg:210.43.32.51
eg:
struct sockaddr_in s_addr;
s_addr.sin_addr.s_addr = inet_addr ("210.43.32.51");
int inet_aton (char *cp, struct in_addr * addr)
include: arpa/inet.h
return: 成功返回1,cp是有效的IP地址,出错返回0,
description:将点分十进制的IPv4地址转换成32位网络字节序二进制IP地址格式。
parameter:
cp:点分十进制ip格式字符串的首地址。eg:210.43.32.51
struct in_addr: 存放转换的结果,32位网络字节序二进制
eg:
in_addr addr;
inet_aton ("210.43.32.51", &addr);
char inet_ntoa (struct in_addr addr)
include: arpa/inet.h
return: 返回指向存放点分十进制IP地址字符串得而首地址
description: 将32位网络字节序二进制IP地址格式转换成点分十进制的IPv4地址。
parameter:
cp:点分十进制ip格式字符串的首地址。eg:210.43.32.51
struct in_addr: 存放转换的结果,32位网络字节序二进制
eg:
in_addr addr;
inet_aton ("210.43.32.51", &addr);
printf ("%s", inet_ntoa (addr));
int inet_pton (int family, const char *cp, void *addr)
include: arpa/inet.h
return: 1:成功,0: family指定的地址族和cp格式不对, -1:出错,查看errno
description: 将字符串格式的IP地址(IPv4点分十进制和IPv6冒分16进制)转换为网络字节序二进制IP地址格式
paramater:
family:使用的协议簇,值是AF_INET 或 AFINET6
cp: 字符串格式的IP地址.IPv4点分十进制(210.43.32.51),IPv6冒分16进制(2001:DB8:2de:0:0:0:0:e13)
addr: 转换成功网络字节序二进制IP地址格式的存放位置
char * inet_ntop (int family, void *addr, char *cp, size_t len)
include: arpa/inet.h
return:成功返回指向存放字符串格式的IP地址字符串的首地址,NULL:出错
paramater:
family:使用的协议簇,值是AF_INET 或 AFINET6
addr: 待转换的网络字节序二进制IP地址
cp: 转换的结果存放的位置
len: 存储结果缓冲区的大小
blog:http://blog.csdn.net/rentiansheng/article/details/8508431
相关文章推荐
- Linux学习记录--关机相关操作
- 实习过程中linux相关开发学习总结(四)
- Linux学习总结(5)——CentOS常用的目录文件操作命令
- 实习过程中linux相关开发学习总结(二)
- Linux学习记录--关机相关操作
- Linux学习记录--文件IO操作相关系统编程
- Linux学习之CentOS(四)----Linux文件属性、所有者、群组、其他组及文件权限操作简要总结
- Linux文件操作学习总结
- Linux-网络操作相关命令--mail;nslookup
- Linux学习总结(5)——CentOS常用的目录文件操作命令
- MySQL学习总结----数据库相关操作
- Linux C语言编程-Linux系统环境--Linux上时间的相关操作---知识点总结
- Linux系统相关学习:IP地址邮件自动发送
- linux学习笔记一----------文件相关操作
- linux的原子操作学习总结
- Linux学习总结(5)——CentOS常用的目录文件操作命令
- Linux文件操作学习总结
- 学习笔记----linux grub 相关操作
- Linux网络编程学习总结
- 【linux gcc】gcc编译器相关(7月6日学习总结)_学习笔记_003