【发布时间】:2012-12-19 16:54:25
【问题描述】:
我已经建立了一个 C++ 服务器/客户端环境,并试图将 time_t 值从服务器发送到客户端(在任何服务器中都是有用的东西)。但我遇到了一个头疼的问题:time_t 似乎没有任何尺寸规格。我想知道通过网络发送 time_t 的最安全(更便携)的方式是什么。
这是一个小例子:
time_t T = time(NULL);
unsigned char * P = (unsigned char *)&T;
// ... Convert it to network byte order, etc.
// Here, 's' would be the socket, and 'S'
// the size of the data that is going to
// be sent
send(s, P, S, 0);
我有两个问题:
- time_t 大小不固定
- time_t 可以是有符号或无符号整数数据类型的 typedef
如何处理这两个问题,以便可以在(几乎)任何架构之间安全地发送它?
提前致谢。
编辑:看到相同的三个答案后,我发现在这里回复更好。很抱歉我之前没有澄清这一点。我更喜欢以“纯”字节发送它,尽管将它作为字符串发送不是问题。据我了解,我需要(再次)记住主机系统中 time_t 数据类型的签名和大小,不是吗? (谢谢和抱歉)
【问题讨论】:
-
以统一格式发送数据的大小(
uint32_t,有人吗?),同时发送一个关于其签名的布尔值。 -
@H2CO3 如果time_t在服务端是8字节,在客户端是4字节呢?
-
将值作为字符串发送会导致问题吗?
标签: c++ c time network-programming