Socket的地址构造[VC/C++编程]
本文“Socket的地址构造[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在成立socket通信的历程中地址起着很关键的作用,在计划TCP/IP网络程序时,必须对 socket 的地址构造有清楚的熟习.
TCP/IP 的地址数据构造.
struct sockaddr {
u_short safamily;/*地址族,AF_XXX*/
char sa_data[14];/*14字节的特定协议地址*/
}
此中14字节的sa_data随协议而差别.在TCP/IP协议族中,地址数据构造为:
struct in_addr{
u_long s_addr;/*32比特的IP地址,网络字节次序 */
};
struct sockaddr_in{
short sin_family; /*AF_INET*/
u_short sin_short; /*16比特的端口号,网络字节次序*/
struct in_addr sin_addr; /*32比特的IP地址,网络字节次序*/
char sin_zero[8]; /*未用*/
}
网络字节次序是TCP/IP中规定好的一种数据表示格局,它与具体的CPU范例、操作系统等无关,从而可以保证数据在差别主机之间传输时可以被精确注释.由主机字节次序转换为网络字节次序的两个函数以下:htons():将16比特的主机字节次序数据转换为网络字节次序htonl():将32比特的主机字节次序数据转换为网络字节次序与此相对应的将网络字节次序转换为主机字节次序的函数为:
ntohs():将16比特的网络字节次序数据转换为主机字节次序ntohl():将32比特的网络字节次序数据转换为主机字节次序由于各种socket地址构造的长度相差很大,TCP/IP地址族的地址长度为8字节,XNS地址为14字节,UNIX地址不定,最长可达110字节,所以无法以一种统一的格局定义它们,需求在bind()调用中明确指定socket地址的长度.
当bind()参数无效或端口已被其他程序所用时,函数返回-1,表明本次socket命名失利.
以上是“Socket的地址构造[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:编写断点续传和多线程下载模块
- ·下一篇文章:Socks5代理服务
- ·中查找“Socket的地址构造”更多相关内容
- ·中查找“Socket的地址构造”更多相关内容