передача данных с 32-разрядного компьютера на 64-разрядный компьютер или наоборот - PullRequest
0 голосов
/ 12 октября 2010

данные передаются по IP с 32-разрядного компьютера на 64-разрядный компьютер (или наоборот). Поскольку данные будут передаваться в сетевом байтовом порядке, проблем при передаче не будет. Вопрос: будут ли какие-либо проблемы, когда данные достигнут получающей стороны? О чем нужно позаботиться, чтобы избежать проблем, если они есть?

Ответы [ 3 ]

0 голосов
/ 12 октября 2010

На том уровне абстракции, о котором вы говорите, проблем быть не должно.32 против 64 не повлияет на сетевую связь на уровне сокетов.

0 голосов
/ 12 октября 2010

Я думаю, что этот вопрос был неправильно понят предыдущими двумя ответчиками. Комментарии ОП указывают на то, что они переносят long из системы LP64 в систему ILP32, предположительно оба x86.

В системе LP64 x86 тип примитива long имеет ширину 64 бита, сначала младший байт. В системе ILP32 x86 тот же тип примитива long имеет ширину 32 бита, сначала младший байт.

Проблемы возникнут, если вы наивно кодируете тип данных long и будете переводить числа туда и обратно. Возможно, вы выполняете отладку на своем компьютере для разработки x86_64, и все, кажется, работает (с вами memcpy (), все), и это таинственным образом ломается в системе i386, потому что вы пытаетесь сжать 8 байт в 4-байтный long .

Именно поэтому stdint.h был представлен в стандартной библиотеке C99. Это позволяет вам писать более переносимый код, указав точную ширину для ваших целых чисел. Если вам нужно целое число без знака шириной 64 бита, используйте uint64_t. Этот тип инвариантен в системах ILP32 и LP64 x86. Аналогично, если вы хотите 32-разрядное целое число со знаком, используйте int32_t. См. эту статью в Википедии для более подробной информации по теме.

0 голосов
/ 12 октября 2010

Не проблема ... данные обычно хранятся (и передаются) в виде байтов, размер которых обычно составляет 8 бит, и не зависит от того, является ли архитектура 32-битной или 64-битной.

«32-разрядная» или «64-разрядная» часть спецификации системы обычно относится к двум вещам: размер адресов is (для указателей на память) и размер ее регистров (для вычислений на CPU) , Это не влияет на фактические данные, хранящиеся на диске или передаваемые по сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...