【发布时间】:2011-11-10 09:41:33
【问题描述】:
我需要通过套接字发送一个 mode_t 类型的变量。我该怎么做?我的意思是我可以使用 snprintf() 将其转换为字符串。但是可以吗?
谢谢
【问题讨论】:
标签: c linux client-server mode
我需要通过套接字发送一个 mode_t 类型的变量。我该怎么做?我的意思是我可以使用 snprintf() 将其转换为字符串。但是可以吗?
谢谢
【问题讨论】:
标签: c linux client-server mode
mode_t 是一个整数。
确实,在套接字上拥有文本协议实际上很有用(更易于调试和发展)。
【讨论】:
当然可以使用字符串。但是,如果您想将其作为整数发送,则可以从标头 <endian.h> 中检查 htobe32 和 be32toh 之类的函数。
【讨论】:
htonl 和 ntohl 的丑陋非标准名称...另外,谁说 mode_t 必须适合 32 位,甚至它具有相同的位模式插座的两端?
要安全地传输mode_t,您必须将其转换为其他形式。没有理由相信通信的两个主机会使用相同的标志定义 mode_t,因此将其打印为整数是不够的;您需要遍历所有模式标志并检查每一个。
【讨论】: