NAME
socket - create an endpoint for communication
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol)
DESCRIPTION
socket()为通信创建一端点(endpoint)并且返回一个指向这个端点的文件描述符。成功调用返回的文件描述符将是当前未为该进程打开的最小编号的文件描述符。
domain参数指定一个通信域(a communication domain)。这个参数选择将用于通信的协议族(protocol family)。这些协议族在<sys / socket.h>中定义。 当前的定义格式包括:
Name | Purpose |
AF_UNIX,AF_LOCAL | Local communication |
AF_INET | |
AF_INET6 | |
AF_IPX | |
AF_NETLINK | |
AF_X25 | |
AF_AX25 | |
AF_ATMPVC | |
AF_APPLETALK | |
AF_PACKET | |
AF_ALG |
type参数指定通信语义。 当前定义的类型是:
SOCK_STREAM | SOCK_DGRAM | SOCK_SEQPACKET | SOCK_RAW | SOCK_RDM | SOCK_PACKET |
注意:某些套接字类型可能并非所有协议族都已经实现。
protocol参数指定用于这个socket的特定协议。通常,在给定协议系列中,只有一个协议可以支持特定的套接字类型,在这种情况下,protocol参数可以指定为0。但是,可能存在许多协议,在这种情况下,必须以这种方式指定特定协议。有关如何将协议名称字符串映射到协议编号,请参见getprotoent(3)。
RETURN VALUE
成功后,将返回新套接字的文件描述符。如果出错,则返回-1,并正确设置errno。
ERRORS
EACCES | 拒绝创建一个指定类型(type)或者协议(protocol)的socket。 |
EAFNOSUPPORT | |
EINVAL | 未知协议或协议族不可用。 |
EINVAL | 无效的的tyep标示。 |
EMFILE | 已达到每个进程对打开文件描述符数量的限制。 |
ENFILE | 已达到打开文件总数的系统范围限制。 |
ENOBUFS or ENOMEM | 可用的内存不足。 只有释放足够的资源后才能创建套接字。 |
EPROTONOSUPPORT | 这个域(domain)不支持协议类型或指定的协议。 |