struct sockaddr与struct sockaddr_in的区别和联系
来源:互联网 发布:linux没有rpm命令 编辑:程序博客网 时间:2024/05/17 00:15
一、struct sockaddr:在linux环境下,该结构体在/usr/include/linux/socket.h中定义,具体如下:
struct sockaddr {
unsigned short sa_family; /* 地址族, AF_xxx */
char sa_data[14]; /* 14字节的协议地址*/
};
二、struct sockaddr_in:在linux环境下,结构体struct sockaddr_in在/usr/include/netinet/in.h中定义,具体如下:
struct sockaddr_in {
short int sin_family; /* 地址族 */
unsigned short int sin_port; /* 端口号 */
struct in_addr sin_addr; /* Internet地址 */
unsigned char sin_zero[8]; /* 与struct sockaddr一样的长度 */
通常的用法是:
int sockfd;
struct sockaddr_in my_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
my_addr.sin_family = AF_INET; /* 主机字节序 */
my_addr.sin_port = htons(MYPORT); /* short, 网络字节序 */
my_addr.sin_addr.s_addr = inet_addr("192.168.0.1");
bzero(&(my_addr.sin_zero), 8); /* zero the rest of the struct */
//memset(&my_addr.sin_zero, 0, 8);
bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr));
你只要记住,填值的时候使用sockaddr_in结构,而作为函数的参数传入的时候转换成sockaddr结构就行了,毕竟都是16个字符长。
转自:http://www.cnblogs.com/hnrainll/archive/2011/04/24/2026432.html
struct sockaddr {
unsigned short sa_family; /* 地址族, AF_xxx */
char sa_data[14]; /* 14字节的协议地址*/
};
二、struct sockaddr_in:在linux环境下,结构体struct sockaddr_in在/usr/include/netinet/in.h中定义,具体如下:
struct sockaddr_in {
short int sin_family; /* 地址族 */
unsigned short int sin_port; /* 端口号 */
struct in_addr sin_addr; /* Internet地址 */
unsigned char sin_zero[8]; /* 与struct sockaddr一样的长度 */
};
通常的用法是:
int sockfd;
struct sockaddr_in my_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
my_addr.sin_family = AF_INET; /* 主机字节序 */
my_addr.sin_port = htons(MYPORT); /* short, 网络字节序 */
my_addr.sin_addr.s_addr = inet_addr("192.168.0.1");
bzero(&(my_addr.sin_zero), 8); /* zero the rest of the struct */
//memset(&my_addr.sin_zero, 0, 8);
bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr));
你只要记住,填值的时候使用sockaddr_in结构,而作为函数的参数传入的时候转换成sockaddr结构就行了,毕竟都是16个字符长。
转自:http://www.cnblogs.com/hnrainll/archive/2011/04/24/2026432.html
- 【转】struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in的区别和联系
- 【转】struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct in_addr,struct sockaddr与struct sockaddr_in的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- live555学习笔记13-RTPInterface详解
- JNI开发------测试编译好的ffmpeg库
- 用U盘通过局域网来安装CentOS 6.0
- Live555学习笔记14-live555多线程论
- 黑马程序员--面向对象(二)
- struct sockaddr与struct sockaddr_in的区别和联系
- OpenCV学习笔记(四十九)——号外!OpenCV-2.4.0 release 千呼万唤始出来
- 4种强制类型转换
- live555学习笔记15-RTCPInstance类小结
- live555学习笔记16-几个重要对象的生命期
- OGNL表达式
- SVN Fixing “SSL handshake failed: SSL error: Key usage violation in certificate has been detected.”
- Android界面刷新
- Java 线程池学习