Как может 32-битный клиент связываться с 64-битным сервером, если передан тип long?
У нас есть 32-битное приложение C++ GUI, работающее на 32-битных окнах 7. Мы планируем перенести наш сервер с приложениями C++ в 64-битную версию Linux. Мы заметили, что длинные типы больше в 64 бит. Это будет несовместимо с передачей сообщений клиент-сервер от 64-разрядных к 32-разрядным. Какой хороший способ решить эту несовместимость? Нужно ли менять код? Как? или мы используем стороннее программное обеспечение для преобразования? Какое программное обеспечение это?
1 ответ
Вот почему есть стандартизированный int32_t
а также uint32_t
типы и т. д., так что вы можете специально выбрать тип в зависимости от ваших потребностей.
Это может быть довольно много работы, чтобы заменить все long
типы для int32_t
во всех структурах, которые вы отправляете, особенно если это большой проект, но вы (надеюсь) должны сделать это только один раз. Другим способом решения этой проблемы является сериализация данных в текстовый формат, а затем десериализация их на принимающей стороне. Это имеет большое преимущество, заключающееся в том, что коммуникация становится практически полностью независимой от платформы.