我正在尝试在两个 C++ 程序之间设置一个 UNIX 套接字服务器/客户端,遵循 Beejs Guide to UNIX IPC ,但是示例代码仅演示了发送和接收 char 数组。我已经看过 here有些人声称最好的选择是将 double 值转换为 char,但是因为我想在一秒钟内多次传递值,所以我想避免这种类型的转换。现在我正试图将指针传递给某个 double,但我不知道如何获取另一边的值。在我正在做的套接字客户端中:
...
double number = 453.23;
send(s, &number, sizeof(number), 0);
但我觉得这不是正确的方法。
最佳答案
假设双方对 double
有相同的表示(包括字节顺序),在套接字的另一端你可以做基本相同的事情:
double number;
recv(s, &number, sizeof(number), 0);
(当然,假设您只是传输double
,或者您有某种协议(protocol),并且在程序的这一点上您确定发件人已经发送了您的double
)
如果无法保证字节序,那么您必须为传输确定字节序并适本地交换字节;最后,如果连 FP 类型的基本表示都不能保证,您最好的选择可能只是将数字写成文本,执行相关的 sscanf
/sprintf
。
关于c++ - 通过本地 UNIX 套接字发送双倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17003841/