1、函数原型
int socket(int domine,int type,int protocol);
1.1 参数
这三个参数都是int类型的,但是他们各自有各自的含义,下面我们针对这三个参数进行分析:
(1)int domin:即协议域,又称为协议族。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET(IPV4)、AF_INET6(IPV6)、AF_LOCAL(或称AF_UNIX,Unix域socket)、AF_ROUTE等等。通常情况下我们使用AF_INET。
AF_INET的定义是:#define AF_INET 2,所以这里的参数都是int型的
(2)int type:是套接口类型,主要SOCK_STREAM(建立TCP连接)、SOCK_DGRAM(建立UDP)、SOCK_RAW;
SOCK_STREAM(建立TCP连接):提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。
SOCK_DGRAM(建立UDP):提供无连接的数据传输服务,不保证可靠性。
SOCK_RAW:该接口允许对较低层次协议,如IP,ICMP直接访问。
(3)int protocol:指定协议。常用的协议有,IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。通常情况系设为0。
注意:并不是上面的type和protocol可以随意组合的,如SOCK_STREAM不可以跟IPPROTO_UDP组合。当protocol为0时,会自动选择type类型对应的默认协议。
2、所在头文件
#include
#include
3、函数返回值
成功:返回套接字描述符(套接字的索引)
失败:返回-1
4、函数功能
返回一个套接字描述符,一个套接字描述符相当于一个套接字的索引号,在后续操作中是通过该索引号找到套接字进行操作。类似于文件描述符。