【问题标题】:Client server program and mode_t客户端服务器程序和mode_t
【发布时间】:2011-11-10 09:41:33
【问题描述】:

我需要通过套接字发送一个 mode_t 类型的变量。我该怎么做?我的意思是我可以使用 snprintf() 将其转换为字符串。但是可以吗?

谢谢

【问题讨论】:

    标签: c linux client-server mode


    【解决方案1】:

    mode_t 是一个整数。

    确实,在套接字上拥有文本协议实际上很有用(更易于调试和发展)。

    【讨论】:

      【解决方案2】:

      当然可以使用字符串。但是,如果您想将其作为整数发送,则可以从标头 <endian.h> 中检查 htobe32be32toh 之类的函数。

      【讨论】:

      • 这些是函数 htonlntohl 的丑陋非标准名称...另外,谁说 mode_t 必须适合 32 位,甚至它具有相同的位模式插座的两端?
      • @R.. 是的,但它有 64 位变体,即使在这种情况下不需要它。
      【解决方案3】:

      要安全地传输mode_t,您必须将其转换为其他形式。没有理由相信通信的两个主机会使用相同的标志定义 mode_t,因此将其打印为整数是不够的;您需要遍历所有模式标志并检查每一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-21
        • 1970-01-01
        • 1970-01-01
        • 2019-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多