目录
socket函数
函数原型
头文件
功能
返回值
参数
错误码
socket函数
函数原型
int socket(int domain, int type, int protocol);
头文件
#include <sys/types.h>
#include <sys/socket.h>
功能
创建一个用于通信的端点,并返回一个文件描述符。
返回值
成功返回新套接字的文件描述符,失败返回-1,并设置错误码。
参数
int domain:指定当前套接字使用的地址族,以下为常见选项。
常用选项 | 描述 |
AF_UNIX AF_LOCAL | 用于本地通信 |
AF_INET | IPv4地址族 |
AF_INET6 | IPv6地址族 |
int type:指定套接字的类型,常见如下
选项 | 描述 |
SOCK_STREAM | 提供有序、可靠的双向字节流服务。如TCP协议 |
SOCK_DGRAM | 数据报套接字。提供不可靠、无连接的服务。如UDP |
SOCK_SEQPACKET | 提供了一个有序、可靠、基于连接的、数据长度固定的服务。数据以“数据报”为单位发送 |
SOCK_RAW | 原始套接字,提供对底层网络协议的原始访问。 |
SOCK_RDM | 提供可靠,但是不保证顺序的服务。 |
SOCK_PACKET | 过时选项,不应在新程序中使用。 |
int protocol:指定具体的协议,通常可以设置为0,表示选择默认协议。例如,当type设置为SOCK_STREAM并且domain设置为AF_INET时,protocol默认就为TCP协议。
错误码
错误码 | 描述 |
EACCES | 创建指定类型和/或协议的权限不足,被拒绝。 |
EAFNOSUPPORT | 当前不支持指定的地址族。 |
EINVAL | 未知协议/类型中的无效标志。 |
EMFILE | 进程文件表溢出/系统范围打开的文件数达到最大。 |
ENOBUFS or EBINEN | 内存不足。 |
EPRORONOSUPPORT | 在指定的地址族中不支持协议类型或指定的协议。 |
有什么疑问、问题可以在评论区讨论,或者私信。
感谢阅读