c++ - 通过本地 UNIX 套接字发送双倍

标签 c++ sockets unix

我正在尝试在两个 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/

相关文章:

c++ - 需要帮助解决编译器错误 : error: invalid conversion from ‘int’ to ‘GIOCondition’

windows - 如何将打开的 TCP 套接字作为标准输入和标准输出从 Perl 传递到 Windows 应用程序

PYTHON - 在不知道服务器的情况下进行UDP监听

java - spring-integration-ip 在连接(断开)时获取客户端的 ip

bash - 如何在 bash 中成对减去字段?

c++ - C++ 中的数据 block 构建逻辑

c++ - 双指针操作

c - 线程安全的多文件写入

c++ - 除以指针值和注释符号

linux - gnuplot 条件代码解释