【发布时间】:2011-04-13 17:47:30
【问题描述】:
下一行中的 0 表示什么? 我可以使用哪些其他标志?
server = socket(AF_UNIX, SOCK_STREAM, 0)
【问题讨论】:
下一行中的 0 表示什么? 我可以使用哪些其他标志?
server = socket(AF_UNIX, SOCK_STREAM, 0)
【问题讨论】:
正如其他人可能所说,socket 的第三个参数通常是一个int,表示协议。 0 表示调用者不想指定协议,将由服务提供者决定。
除了零,另一个常见的是IPPROTO_TCP。
可以在您的机器上使用man 2 socket 或访问here 在手册页上找到完整的详细信息。
【讨论】:
来自 socket 的手册页:
int socket(int domain, int type, int protocol);
协议指定了一个 使用的特定协议 插座。通常只有一个 协议 存在以支持给定协议中的特定套接字类型 家庭,在这种情况下协议可以是 具体 字段为 0。然而,许多协议可能 存在,在这种情况下,一个特定的 协议必须是 以这种方式指定。要使用的协议号特定于 “通信领域”,其中 通讯 将发生国家化;见协议(5)。参见 getprotoent(3) 如何将协议名称字符串映射到 原型 列号。
【讨论】:
最好的办法是阅读man page。该文档指出第三个参数是协议,在本例中为 SOCK_STREAM,但也可以是其他参数。
【讨论】: