首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

linux 下和windows下数据内存结构有区别么?该怎么解决

2012-02-21 
linux 下和windows下数据内存结构有区别么?比如我能直接把一个windows下的int或其它类型的基本数据通过网

linux 下和windows下数据内存结构有区别么?

比如我能直接把一个windows下的int或其它类型的基本数据通过网络传递给linux使用么?
windows:
int a = 1234;
float f = 1234.555;
char str[100];
send(socket, (const char*)&a, sizeof(int), 0);
send(socket, (const char*)&f, sizeof(float), 0);
send(socket, str, 100, 0);

linux:
int a = 0;
float f = 0;
char str[100];
recv(socket, (char *)&a, sizeof(int), 0);
recv(socket, (char *)&f, sizeof(float), 0);
recv(socket, str, 100, 0);

[解决办法]
字节序是不是要考虑下?windows是低位放在低地址,如果数据这样发出去了,其他os收到后,采用高位存放低地址的方式来解析数据,应该就会出错了。所以数据最好都统一成网络字节序吧.
[解决办法]
Window-------NetWork-----------Linux

所以,windows和linux各自管好和network通讯的事情就行了,其他的不用管.
[解决办法]
同意ls的,在网络中传输,为了不同的系统的大端小端的问题,统一采用网络字节顺序(这个是标准的表示,具体是大是小记不清了,反正是大和小中的一种),系统接收后再根据自己的系统存储形式,转化为大端或小端

探讨
Window-------NetWork-----------Linux

所以,windows和linux各自管好和network通讯的事情就行了,其他的不用管.

[解决办法]
大端小端是硬件的事情, 和操作系统有什么关系?
[解决办法]
引用楼主 mengjj 的帖子:

比如我能直接把一个windows下的int或其它类型的基本数据通过网络传递给linux使用么?
windows:
int a = 1234;
float f = 1234.555;
char str[100];
send(socket, (const char*)&a, sizeof(int), 0);
send(socket, (const char*)&f, sizeof(float), 0);
send(socket, str, 100, 0);

linux:
int a = 0;
float f = 0;
char str[100];
recv(socket, (char *)&a, sizeof(int), 0);
recv(socket, (char *)&f, sizeof(f…

热点排行