socket

接口名称

socket(int domain, int type, int protocol)

接口描述

创建通信节点并返回描述符。

参数说明

参数 说明 备注
domain 通信域 支持AF_INET。
type 通信语义类型 支持SOCK_STREAM、SOCK_DGRAM、SOCK_CLOEXEC(默认支持该type,且不可修改)、SOCK_NONBLOCK。
protocol 协议类型 支持IPPROTO_TCP(type必须为SOCK_STREAM)。支持IPPROTO_UDP(type必须为SOCK_DGRAM)。支持IPPROTO_IP,即设置为0。

返回值

类型:int

  • 正数:socketfd,表示成功
  • -1:表示失败,并设置errno以指示错误类型

错误码

错误码 描述
EINVAL 未知协议,或协议族不可用。
EMFILE 进程的file数量超过max_tcpcb。
ENOMEM 内存申请失败。
EPROTONOSUPPORT domain不支持指定协议。
ENAVAIL KNET资源初始化失败。
EACCES 进程没有适当的权限。
ENOBUFS 系统中的可用资源不足,无法执行该操作。
EMFILE 进程的file数量超过最大文件描述符数。通过ulimit -n查看。
ENFILE 系统的file数量超过上限。
ELIBBAD 系统库符号加载失败。
EPERM 信号退出流程中,不允许调用该函数接口。
EINVAL 共线程部署模式时,sockfd的worker id和当前线程的worker id不一致,导致socket跨worker线程调用。