socket()
函数是用于创建套接字(Socket)的基础系统调用之一。套接字是网络通信的基本结构,用于在不同主机之间进行数据传输。socket()
函数返回一个文件描述符(file descriptor),这个描述符代表了新创建的套接字。
函数原型
cpp
复制代码
int socket(int domain, int type, int protocol);
参数说明
-
domain
(协议族):- 指定使用的通信协议族,也就是套接字的地址类型。常用的选项包括:
AF_INET
: 表示使用 IPv4 地址。这个是最常用的协议族。AF_INET6
: 表示使用 IPv6 地址。AF_UNIX
或AF_LOCAL
: 用于本地通信(同一台主机上的进程间通信)。
- 指定使用的通信协议族,也就是套接字的地址类型。常用的选项包括:
-
type
(套接字类型):- 指定套接字的类型,决定了通信的行为方式。常用的选项包括:
SOCK_STREAM
: 提供面向连接的稳定数据传输,即流式套接字。通常与 TCP 协议配合使用。SOCK_DGRAM
: 提供无连接的数据报服务,即数据报套接字。通常与 UDP 协议配合使用。SOCK_RAW
: 提供原始网络协议访问,通常用于需要直接访问 IP 层的应用。
- 指定套接字的类型,决定了通信的行为方式。常用的选项包括:
-
protocol
(协议):-
指定使用的具体协议。通常在指定
domain
和
type
后,这个参数可以设置为
0
,表示使用默认协议。
IPPROTO_TCP
: 用于 TCP 协议(当type
为SOCK_STREAM
时)。IPPROTO_UDP
: 用于 UDP 协议(当type
为SOCK_DGRAM
时)。0
: 自动选择与type
对应的默认协议。
-