socket函数的参数和解释

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44065088/article/details/102639678

头文件  #include <sys/socket.h>

int socket(int family, int type, int protocol)

一个进程必须做的事情就是调用 socket 函数 指定期望的通信协议类型。

该函数返回一个文件描述符  就是  sockfd 。用于本进程的 套接字通信 本进程结束 才释放 (close(sockfd)),

如果不指定第三个参数 一般 就写 一个  0  默认的 就可以了。

并非所有的  family  和  type 的组合都是有效的。

先来指出每个参数的类型  后面再 讨论组合。

family:

1: AF_INET      (IPV4)

2:AF_INET6     (IPV6)

3:AF_LOCAL    (UNIX域协议)

4:AF_ROUTE   (路由套接字)

5:AF_KEY         (密钥套接字)

type:

1:SOCK_STREAM      (字节流套接字)

2:SOCK_DGRAM        (数据报套接字)

3:SOCK_SEQPACKET   (有序分组套接字)

4:SOCK_RAW      (原始套接字)

protocol:

1:IPPROTO_TCP          (tcp传输协议)

2:IPPROTO_UDP       (udp传输协议)

3:IPPROTO_SCTP     (sctp传输协议)

声明一下 这个 SCTP 是比较新的协议 也是一个面向连接的协议 这里我们不做探讨

family与type的正确组合关系

1:AF_INET(TCP / SCTP)  SOCK_STREAM

2:AF_INET(UDP)      SOCK_DGRAM

3:AF_INET(SCTP)    SOCK_SEQPACKET

4:AF_INET(IPV4)      SOC_RAW

5:AF_INET6(TCP / SCTP)   SOCK_STREAM

6:AF_INET6(UDP)     SOCK_DGRAM

7:AF_INET6(SCTP)    SOCK_SEQPACKET

8:AF_INET6(IPV6)      SOC_RAW

AF_LOCAL  -------  SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET

AF_ROUTE --------  SOCK_RAW

AF_KEY ---------  SOCK_RAW

猜你喜欢

转载自blog.csdn.net/qq_44065088/article/details/102639678