站内搜索
最近浏览
- WinCE Security...
- xdebug配置说明
- VC++ 获取文件的创建、修...
- ASP进度条
- 简单代理服务器C代码实现(S...
- 程序设计竞赛试题选(02)
- 如何在ASP程序中打印Acc...
- UTF-8和16进制区间
- ASP实用技巧:强制刷新和判...
- 运行中程序删除自己的方法
- asp提高首页性能的一个技巧
- [J2EE]J2EE 应用服务器技术
- VB变量命名规范
- C语言常见错误小结
- (摘自网络)如何在IIS中调...
推荐文章
热文排行
Socket地址结构介绍
转帖
在建立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通信的过程中地址起着很关键的作用,在设计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命名失败。
[wangjy17908]
添加时间:2007-08-03