我一整天都在阅读sys/socket.h并最终开始理解它,现在开始使用它,但是,我不知道为什么我不能为{{{{{{{ 1}} Address Owner1 Owner2 Owner3
123 Main St Mary Ann
436 East St Billy Bob Gilligan Skipper
结构的成员。
规范sa_family
结构:
sockaddr
数据类型:sockaddr
- 无符号整数类型(2-4个字节)
值:
struct sockaddr{
sa_family_t sa_family address family
char sa_data[] socket address (variable-length data)
};
这有点令人困惑,因为这些值是sa_family_t
数据类型而不是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
。
简单测试:
char
错误:
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;
}
...我在这里缺少什么?
答案 0 :(得分:3)
这是因为你没有包含该结构的定义。结构sockaddr_in
在<netinet/in.h>
中定义。有关详细信息,请参阅:sockaddr_in undeclared identifier