【问题标题】:what does 0 indicate in socket() system call?socket() 系统调用中的 0 表示什么?
【发布时间】:2011-04-13 17:47:30
【问题描述】:

下一行中的 0 表示什么? 我可以使用哪些其他标志?

server = socket(AF_UNIX, SOCK_STREAM, 0)

【问题讨论】:

    标签: c sockets unix


    【解决方案1】:

    正如其他人可能所说,socket 的第三个参数通常是一个int,表示协议。 0 表示调用者不想指定协议,将由服务提供者决定。

    除了零,另一个常见的是IPPROTO_TCP

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

    【讨论】:

      【解决方案2】:

      来自 socket 的手册页:

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

      协议指定了一个 使用的特定协议 插座。通常只有一个 协议 存在以支持给定协议中的特定套接字类型 家庭,在这种情况下协议可以是 具体 字段为 0。然而,许多协议可能 存在,在这种情况下,一个特定的 协议必须是 以这种方式指定。要使用的协议号特定于 “通信领域”,其中 通讯 将发生国家化;见协议(5)。参见 getprotoent(3) 如何将协议名称字符串映射到 原型 列号。

      【讨论】:

        【解决方案3】:

        最好的办法是阅读man page。该文档指出第三个参数是协议,在本例中为 SOCK_STREAM,但也可以是其他参数。

        【讨论】:

        • SOCK_STREAM 用于第二个参数类型,而不是第三个。
        猜你喜欢
        • 1970-01-01
        • 2023-03-31
        • 2011-11-16
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-07
        • 2017-06-03
        相关资源
        最近更新 更多