socket学习: sockAddr_t 结构
来源:互联网 发布:中信证券行情软件 编辑:程序博客网 时间:2024/06/04 19:27
short int sin_family;
unsigned short int sin_port;
truct in_addr sin_addr;
unsigned char sin_zero[8];
sin_family指代协议族,在socket编程中只能是AF_INET sin_port存储端口号(使用网络字节顺序) sin_addr存储IP地址,使用in_addr这个数据结构 sin_zero是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节。 s_addr按照网络字节顺序存储IP地址
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针也可以指向 sockaddr的结构体,并代替它。也就是说,你可以使用sockaddr_in建立你所需要的信息,
将IP地址转换成长整型:首先,假设你已经有了一个sockaddr_in结构体ina,你有一个IP地址"132.241.5.10"要储存在其中,你就要用到函数inet_addr(),将IP地址从点数格式转换成无符号长整型。使用方法如下:ina.sin_addr.s_addr= inet_addr("132.241.5.10");
注意,inet_addr()返回的地址已经是网络字节格式,所以你无需再调用函数htonl()。
我们现在发现上面的代码片断不是十分完整的,因为它没有错误检查。显而易见,当inet_addr()发生错误时返回-1。记住这些二进制数字?(无符号数)-1仅仅和IP地址255.255.255.255相符合!但这可是广播地址!所以,记住要先进行错误检查。
怎样将一个in_addr结构体输出成点数格式?你要用到函数 inet_ntoa()("ntoa"的含义是"network toascii"),就像这样:printf("%s",inet_ntoa(ina.sin_addr));它将输出IP地址。需要注意的是inet_ntoa()将结构体in_addr作为一个参数,不是长整形。同样需要注意的是它返回的是一个指向一个字符的指针。它是一个由inet_ntoa()控制的静态的固定的指针,所以每次调用inet_ntoa(),它就将覆盖上次调用时所得的IP地址。例如:
char *a1, *a2;
.
.
a1 = inet_ntoa(ina1.sin_addr);
a2 = inet_ntoa(ina2.sin_addr);
printf("address 1: %s ",a1);
printf("address 2: %s ",a2);
输出如下:
address 1: 132.241.5.10
address 2: 132.241.5.10
假如你需要保存这个IP地址,使用strcopy()函数来指向你自己的字符指针。
inet_ntoa()
简述:
将网络地址转换成“.”点隔的字符串格式
*/
unsigned short int sin_port;
truct in_addr sin_addr;
unsigned char sin_zero[8];
sin_family指代协议族,在socket编程中只能是AF_INET sin_port存储端口号(使用网络字节顺序) sin_addr存储IP地址,使用in_addr这个数据结构 sin_zero是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节。 s_addr按照网络字节顺序存储IP地址
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针也可以指向 sockaddr的结构体,并代替它。也就是说,你可以使用sockaddr_in建立你所需要的信息,
- socket学习: sockAddr_t 结构
- socket结构
- socket网络编程学习之路 第二篇-----socket函数与结构
- socket 的地址结构
- socket 的地址结构
- socket 的地址结构
- socket 的地址结构
- socket 的地址结构
- socket 的地址结构
- socket 的地址结构
- socket 的地址结构
- socket的结构体
- Socket结构区别
- socket地址结构描述
- socket编程几个结构
- socket地址结构体
- Socket地址结构
- struct socket 结构详解
- 1035. DNA matching
- 我的Android学习开发历程--HelloWorld项目的创建
- 在苹果手机上开发软件是用什么方法进行软件加密防盗版的?
- android 解决wifi断线不稳定的问题-终极办法
- 深入理解iPhone静态库(手把手教)
- socket学习: sockAddr_t 结构
- MVC3-RAZOR-玩转WebImage
- 在 Word 2007 文件設定多阶层自动编号的方式
- CFRunLoop
- VC++获得当前系统时间的几种方案
- ubuntu 10.04LTS 下openoffice
- classloader
- Ubuntu上使用Heroku 云服务发布有数据库的Rails应用
- 考量操作系统兼容性