socket编程中常用的函数详解
源码地址
socket()函数
// 创建一个socket描述符
int socket(int domain, int type, int protocol);
- domain:协议域,常用到的有,AF_INET(网络通信,值为IPv4地址)、AF_INET6(网络通信,值为IPv6地址)、AF_LOCAL(本地通信,值为绝对地址)
- type:数据传输方式/套接字类型,常用到的有,SOCK_STREAM(流格式套接字/面向连接的套接字)、SOCK_DGRAM(数据报套接字/无连接的套接字)、SOCK_RAW(原始套接字)、SOCK_RDM(可靠的数据报文)、SOCK_SEQPACKET(序列化包,提供一个序列化的、可靠的、双向的基本连接的数据传输通道)
- protocol:指定协议,常用到的有,IPPROTO_TCP(TCP传输协议)、IPPTOTO_UDP(UDP传输协议)、IPPROTO_SCTP(STCP传输协议)、IPPROTO_TIPC(TIPC传输协议)
创建错误提示
EACCES:没有权限建立制定的domain的type的socket
EAFNOSUPPORT:不支持所给的地址类型
EINVAL:不支持此协议或者协议不可用
EMFILE:进程文件表溢出
ENFILE:已经达到系统允许打开的文件数量,打开文件过多
ENOBUFS/ENOMEM:内存不足。socket只有到资源足够或者有进程释放内存
EPROTONOSUPPORT:制定的协议