我正在通过C++服务器的套接字连接从Java客户端接收一些数值数据。当我接收到4字节int类型数据时,我只需要使用ntohl()函数或倒转位顺序来转换为c ++ int类型。然而,我尝试将长数据类型从Java转换为C++时遇到了问题。无论我尝试什么,都无法恢复正确的值。我也尝试使用LONG64、ULONG64和int64_t,但都没有成功。
例如,当我从Java发送long s = 1时,在C++端我做了:
如果我这样做:
例如,当我从Java发送long s = 1时,在C++端我做了:
int64_t size;
recv(client, (char *)&size, sizeof int64_t, 0);
如果我这样做:
size = ntohl(size)
无论Java中的原始长整型值是多少,大小都将变为0!
如果我不进行ntohl()转换,则当s = 1时,size = 72057594037927936
我几乎找不到关于这个主题的有用信息,我会感激任何建议。
int8_t ar [n]
中,并实际验证读取的字节数并验证它们在序列中的位置。验证recv
的返回结果也不会有坏处。 - WhozCraig