在socket()系统调用中0表示什么?

时间:2010-09-17 13:36:58

标签: c sockets unix

0表示以下行? 我可以使用的其他标志是什么?

server = socket(AF_UNIX, SOCK_STREAM, 0)

3 个答案:

答案 0 :(得分:10)

正如其他人所说,socket的第三个参数通常是int,表示协议。 0表示呼叫者不想指定协议,并将其留给服务提供商。

除零以外,另一个常见的是IPPROTO_TCP

可以在您的计算机上使用man 2 socket或访问here在手册页上找到完整的详细信息。

答案 1 :(得分:3)

来自socket的手册页:

int socket(int domain, int type, int protocol);
  

该协议指定了一个   与之配合使用的特定协议   插座。通常只有一个   协议          存在以支持给定协议中的特定套接字类型   家庭,在这种情况下协议可以   异型材          被称为 0 。但是,许多协议可能是有可能的   存在,在这种情况下是特定的   协议必须          以这种方式指定。要使用的协议号是特定的   其中的“通信领域”   通讯之          将要发生;见协议(5)。请参阅getprotoent(3)   如何将协议名称字符串映射到   proto-          col number。

答案 2 :(得分:-1)

这里最好的事情是阅读man page。该文档指出第三个参数是协议,在这种情况下是SOCK_STREAM,但也可以是其他协议。