int socket(int domain, int type, int protocol);
据我了解,
int domain;
该参数用于传递地址族或协议(protocol)族。我相信地址族和协议(protocol)族之间没有重大区别。我们使用它来指定地址类型(IPV4 或 IPv6)。
int type;
该参数用于网络层的UDP、TCP等连接类型。
int protocol;
该参数用于指定TCP、UDP等协议(protocol)。
我的问题是
第二个和第三个参数有什么区别?如果我们使用 TCP 协议(protocol),我们将使用 SOCK_STREAM
,如果我们使用 UDP 协议(protocol),我们将在第二个参数中使用 SOCK_DGRAM
。那么为什么在这种情况下需要两个参数呢?为什么我们不使用单个参数而不是两个?
最佳答案
根据手册页,协议(protocol)是套接字的子类型,对于大多数类型,没有子类型,但某些类型可能有其他子类型。
例如,如果你有原始套接字类型,你可以指定协议(protocol)号。
int fd = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);
-MS
关于c - socket函数中的stream参数和protocol参数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19971285/