sockaddr结构体 - (SYS / socket.h中) [英] sockaddr structure - (sys/socket.h)
问题描述
我一直读 SYS / socket.h中所有一天,终于开始明白,现在开始使用它,但是,我不知道为什么我不能分配一个值<$的上sa_family
成员C $ C>的sockaddr 结构。
Ive been reading the sys/socket.h all day and finally starting to understand it, and now starting to use it, however, I'm not sure why I can't assign a value to sa_family
member of the sockaddr
struct.
规格的sockaddr
结构:
struct sockaddr{
sa_family_t sa_family address family
char sa_data[] socket address (variable-length data)
};
数据类型: sa_family_t
- 无符号整型(2-4字节)
Data Type: sa_family_t
- Unsigned integral type (2-4 bytes)
值:
Name Purpose Man page
AF_UNIX, AF_LOCAL Local communication unix(7)
AF_INET IPv4 Internet protocols ip(7)
AF_INET6 IPv6 Internet protocols ipv6(7)
AF_IPX IPX - Novell protocols
AF_NETLINK Kernel user interface device netlink(7)
AF_X25 ITU-T X.25 / ISO-8208 protocol x25(7)
AF_AX25 Amateur radio AX.25 protocol
AF_ATMPVC Access to raw ATM PVCs
AF_APPLETALK AppleTalk ddp(7)
AF_PACKET Low level packet interface packet(7)
AF_ALG Interface to kernel crypto API
这是一个有点混乱,因为这些值字符
数据类型不是 unsigned int类型
。
简单的测试:
#include<stdio.h>
#include<sys/socket.h>
int main(void){
struct sockaddr_in address;
address.sin_family = AF_INET;
printf("Socket Address Family: %s\n", address.sin_family);
return 0;
}
错误:
的地址存储大小是不知道
应该打印出套接字地址家庭:AF_INET
...什么我在这里丢失
It should be printing out Socket Address Family: AF_INET
... what am I missing here?
推荐答案
这是因为你不包括结构的定义。结构 SOCKADDR_IN
在中所定义; netinet / in.h中&GT;
。有关详细信息,请参阅: SOCKADDR_IN未声明的标识符
It is because you don't include the definition of that structure. The structure sockaddr_in
is defined in <netinet/in.h>
. For more details, see: sockaddr_in undeclared identifier
这篇关于sockaddr结构体 - (SYS / socket.h中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!