网络地址相关数据结构与函数
2012-04-25 23:42
295 查看
函数声明:char*inet_ntoa(structin_addr);
函数功能:将网络地址转换成“.”点隔的字符串格式。
函数声明:intinet_aton(constchar*string,structin_addr*addr);
函数功能:将一个字符串IP地址转换为一个32位的网络序列IP地址。
参数描述:1输入参数string包含ASCII表示的IP地址。
2输出参数addr是将要用新的IP地址更新的结构
函数声明:in_addr_tinet_addr(constchar*cp);
函数功能:将一个点间隔地址cp转换成一个in_addr
structsockaddr_insock;
sock.sin_addr.s_addr=inet_addr("192.168.0.1");
函数声明:intinet_pton(intaf,constchar*src,void*dst);
函数功能:转换字符串到网络地址,第一个参数af是地址族AF_INET或AF_INET6,转换后存在dst中
函数声明:constchar*inet_ntop(intaf,constvoid*src,char*dst,socklen_tcnt);
函数功能:转换网络二进制结构到ASCII类型的地址,参数的作用和上面相同,只是多了一个参数socklen_tcnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC
函数功能:将网络地址转换成“.”点隔的字符串格式。
函数声明:intinet_aton(constchar*string,structin_addr*addr);
函数功能:将一个字符串IP地址转换为一个32位的网络序列IP地址。
参数描述:1输入参数string包含ASCII表示的IP地址。
2输出参数addr是将要用新的IP地址更新的结构
函数声明:in_addr_tinet_addr(constchar*cp);
函数功能:将一个点间隔地址cp转换成一个in_addr
structsockaddr_insock;
sock.sin_addr.s_addr=inet_addr("192.168.0.1");
函数声明:intinet_pton(intaf,constchar*src,void*dst);
函数功能:转换字符串到网络地址,第一个参数af是地址族AF_INET或AF_INET6,转换后存在dst中
函数声明:constchar*inet_ntop(intaf,constvoid*src,char*dst,socklen_tcnt);
函数功能:转换网络二进制结构到ASCII类型的地址,参数的作用和上面相同,只是多了一个参数socklen_tcnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC
structsockaddr
{
unsignedshortsa_family;/*addressfamily,AF_xxx*/
charsa_data[14];/*14bytesofprotocoladdress*/
};
structsockaddr_in
{
shortintsin_family;/*Addressfamily*/
unsignedshortintsin_port;/*Portnumber*/
structin_addrsin_addr;/*Internetaddress*/
unsignedcharsin_zero[8];/*Samesizeasstructsockaddr*/
};
/*in_addr_t其实是unsignedlong,一个无符号32位整型数*/
structin_addr
{
in_addr_ts_addr;
};
structin_addr
{
union
{
struct{u_chars_b1,s_b2,s_b3,s_b4;}S_un_b;
struct{u_shorts_w1,s_w2;}S_un_w;
u_longS_addr;
}S_un;
#defines_addrS_un.S_addr
};
intmain(void)
{
charIPdotdec[20]={"192.168.1.1"};//存放点分十进制IP地址
structin_addrs;//IPv4地址结构体
inet_pton(AF_INET,IPdotdec,(void*)&s);
printf("inet_pton:0x%x\n",s.s_addr);//注意得到的字节序
inet_ntop(AF_INET,(void*)&s,IPdotdec,16);
printf("inet_ntop:%s\n",IPdotdec);
}
相关文章推荐
- 网络设备发送队列相关数据结构及其创建函数 (linux网络子系统学习 第十节 )
- Oracle数据库(Oracle存储结构、Oracle运行机制、日期相关的函数、序列、大对象数据类型、表的修改与约束、事务)
- 网络地址转换相关函数使用(inet_addr,inet_ntoa,inet_addr)
- Nginx数据结构及相关接口函数
- 网络编程中4个重要的地址数据结构
- netlink监听网络变化代码(转载)+流程分析(原创+转载)+数据结构以及相关宏的解析(原创)
- IplImage数据结构及其相关函数
- 金融分析之股票相关历史数据爬虫地址
- 数据结构之队列相关
- 文件磁盘相关函数[22]-文本文件读写-不同数据类型的写入
- UNIX网络编程第3章套接字编程简介3.2套接字地址结构3.3值结果参数3.4字节排序函数
- sql数据库相关:查看存储过程的内置函数和手写的查看表结构存储过程
- 半边数据结构的相关网站
- 【Python】数据类型转换相关函数大集合
- 网络编程相关函数
- 【linux驱动笔记】字符设备驱动相关数据结构与算法
- 网络协议栈17:connect函数分解之网络层接收数据处理
- 温习数据结构之图的邻接矩阵的相关操作2011.10.22
- 【数据结构与算法】HashTable相关操作实现(附完整源码)
- C#数据同步中基本步骤和用到的相关函数