sockaddr结构 - (sys / socket.h)

时间:2015-09-15 22:13:12

标签: c linux sockets network-programming ip

我一整天都在阅读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; } ...我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

这是因为你没有包含该结构的定义。结构sockaddr_in<netinet/in.h>中定义。有关详细信息,请参阅:sockaddr_in undeclared identifier