sockaddr结构体 - (SYS / socket.h中) [英] sockaddr structure - (sys/socket.h)

查看:330
本文介绍了sockaddr结构体 - (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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆