Linux 提供的头文件“/usr/include/linux/socket.h”包含支持的地址族和协议族的定义:
/* Supported address families. */
#define AF_UNSPEC 0
....
/* Protocol families, same as address families. */
#define PF_UNSPEC AF_UNSPEC
...
Run Code Online (Sandbox Code Playgroud)
但是为什么不定义套接字类型呢?
我可以在“/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,
};
Run Code Online (Sandbox Code Playgroud)
我想知道为什么Linux提供的头文件中没有定义这些?
用户空间程序应该使用:
#include <sys/socket.h>
Run Code Online (Sandbox Code Playgroud)
注意:sys不是linux。
这将然后#include适当的低级头文件。
事实上,一些定义是在<bits/socket.h>和一些<linux/socket.h>仅仅是一个实现细节。
| 归档时间: |
|
| 查看次数: |
2868 次 |
| 最近记录: |