gpt4 book ai didi

c - 为什么 文件没有定义套接字类型?

转载 作者:行者123 更新时间:2023-12-03 11:50:44 24 4
gpt4 key购买 nike

Linux 提供的头文件“/usr/include/linux/socket.h”包含支持的地址系列和协议(protocol)系列的定义:

/* Supported address families. */
#define AF_UNSPEC 0
....

/* Protocol families, same as address families. */
#define PF_UNSPEC AF_UNSPEC
...

但是为什么不定义套接字类型呢?

我可以在“/usr/include/bits/socket.h”中找到它的定义

enum sock_type {
SOCK_DGRAM = 1,
SOCK_STREAM = 2,
SOCK_RAW = 3,
SOCK_RDM = 4,
SOCK_SEQPACKET = 5,
SOCK_DCCP = 6,
SOCK_PACKET = 10,
};

我想知道为什么Linux提供的头文件中没有定义这些?

最佳答案

用户空间程序应该使用:

#include <sys/socket.h>

注意: sys ,不是 linux .

这将 #include适当的低级头文件。

一些定义在 <bits/socket.h> 中的事实还有一些在 <linux/socket.h>只是一个实现细节。

关于c - 为什么 <linux/socket.h> 文件没有定义套接字类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com