socket函数
1)头文件:
#include < sys/types.h >
#include < sys/socket.h >
2)函数定义形式
int socket(int domain, int type, int protocol);
函数功能
1)创建一个套接字文件,然后以文件的形式进行数据通信
2)成功:返回套接字文件描述符
3)失败:返回 -1
函数参数
domain参数
1)用于指定采用的协议族及其对应的ip地址格式
2)协议族与ip地址格式对应且每个协议族的ip地址格式都不相同
3)所以一个参数即可确定要采用的协议族以及ip地址格式
例如:
将domain参数设置为 PF_INET,就是指定使用IPV4版本的TCP/IP协议族
type参数
1)套接字类型,用于在协议族确定的前提下进一步指定所采用的子协议
如要采用TCP/IP协议族中的TCP协议
2)常见设置值包括:
SOCK_STREAM:表示使用有序的、面向连接的、可靠的双向通信的字节流通信(如当domain参数设置为PF_INET时就表示使用TCP/IP协议族中的TCP协议)
SOCK_DGRAM:表示使用不连接、不可靠、固定长度的数据报通信(如当domain参数设置为PF_INET时就表示使用TCP/IP协议族中的UDP协议)
SOCK_RDM:表示想使用原始网络通信(如当domain参数设置为PF_INET时就表示直接使用TCP/IP协议族中的ip协议)
SOCK_NONBLOCK:用于将socket函数返回的文件描述符指定为非阻塞,可以和上面的宏使用 ’ | ’ 运算(如采用SOCK_STREAM | SOCK_NONBLOCK表示使用TCP协议且是非阻塞)
SOCK_CLOEXEC:一旦进程exec执行新程序时,自动关闭socket返回的套接字文件描述符
protocol参数
1)用于指定协议号
2)当设置为0时,则指定使用由前两的参数指定的具体协议
3)当前两个参数指定的协议有好几个,则需要具体的协议号来指定的具体的协议