gpt4 book ai didi

c++ - memcpy sizeof(typname) 跨 TCP 应用程序的 C/C++ 可靠性

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:12 25 4
gpt4 key购买 nike

我一直在我目前正在从事的项目中做一些文件 IO,到目前为止,我一直在使用以下快速方便的方法读取整个数据 block :

struct Header { ... };
class Data { ... };
// note that I have not used compiler directives to pack/align/order bytes
// partly because I don't know how to.

Header _header;
Data _data;
std::ifstream fin(filename);
fin.read((char*)&_header, sizeof(Header));
fin.read((char*)&_data, sizeof(Data));
fin.close();

我的问题是,对于每个编译器和每台不同的计算机,假设字节以相同的方式对齐和排序是否可以?

例如,如果我采用 Header 结构并在 Linux 上编译客户端程序,在 Windows 上编译服务器程序。字节的顺序是否相同,以便双向接收和发送都不会出现问题?

最佳答案

不,这根本不能保证。有一个特定的网络字节顺序,据我所知,WinAPI 和 POSIX 都提供本地到网络的翻译功能。此外,您可以使用编译器指令控制对齐方式。但是您必须明确地处理这两件事。

关于c++ - memcpy sizeof(typname) 跨 TCP 应用程序的 C/C++ 可靠性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com