创建socket

函数原型

1
2
3
#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain,int type,int protocol);

形参

  • domain:告诉系统使用哪个底层协议族。(AF_INET,AF_INET6,AF_UNIX等)
  • type: 指定服务类型,包括SOCK_STREAM(字节流,TCP使用)、SOCK_DGRAM(数据报服务,UDP使用)等。另外在Linux内核版本为2.6.17版本起,type还可以接收刚才的两个服务类型和下面两个重要的标志相与的值:SOCK_NONBLOCK和SOCK_CLOEXEC。它们分别表示将创建一个新的socket设为非阻塞的,以及用fork创建子进程时,在子进程中关闭该socket。
  • protocol:一般设置为0。

返回值

socket系统调用成功时,返回一个socket文件描述符,失败返回-1并设置errno。

更为详细的socket系统调用可以参考其man手册