|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2014, 20:59 | #1 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Кросплатформенность данных передающиеся по сети
Здравствуйте.
Собираюсь написать tcp клиент + сервер, сам сервер на Linux, а клиент может быть на Linux или Windows. Пока что у меня только один компьютер и хочется узнать что требуется сделать для обеспечения кроссплатформенности передаваемых по сети данных, чтобы в будущем не столкнутся с проблеммами. Пока что мои тестовые сервер и клиент расположенные на одном компе работают нормально. Я где-то слышал что в Windows и Linux могут быть разные размеры типов данных, например вроде бы тип int имеет разный размер в байтах. Поможет ли обеспечить кроссплатформенность вместо такой записи unsigned int i; вот такая? uint32 i; или uint8 i; В общем подскажите что необходимо сделать для того, чтобы данные нормально читались и на клиенте, и на сервере? Спасибо за внимание. |
01.04.2014, 21:41 | #2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Данным поверх транспортных протоколов все равно, главное чтобы формат пакетов был известен принимающей стороне.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
01.04.2014, 22:56 | #3 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
uint32 это, как можно догадаться, безнаказанное целое длинной строго 32 бита. (ведет себя как просто unsigned int, но как бы гарантирует что оно будет длинной 32 бита, вроде штука хорошая, не знаю что про нее стандарт говорит, но gcc о ней знает).
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 01.04.2014 в 23:13. |
|
02.04.2014, 05:43 | #4 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Ясно, спасибо за помощь.
А вот что касается функций htons() и htonl(), их нужно вызывать и на сервере, и на клиенте? Или только на сервере будет достаточно? |
03.04.2014, 12:30 | #5 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Надо взять высокоуровневый протокол и гонять xml или json.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
04.04.2014, 13:44 | #6 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Надо взять высокоуровневый протокол и гонять xml или json. В текстовом виде данные будут весить больше=( Мне нужна скорость. Правильно ли я понял, что если я буду преобразовывать данные в тип char, то функции htons и т.д. можно не использовать? |
04.04.2014, 13:54 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
почитайте справку по функции и поймете нужна она вам или нет. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
19.04.2014, 18:01 | #8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
http://www.cplusplus.com/reference/cstdint/ Или в виде xml. При этом, если возникла необходимость снизить объем трафика, xml перед отправкой сжимают как нибудь zip архиватором. |
|
19.04.2014, 19:45 | #9 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача данных по сети | Vadiliy | Общие вопросы .NET | 11 | 25.02.2014 08:15 |
Передача данных по сети | Imposters | Общие вопросы .NET | 2 | 13.10.2012 18:45 |
Передача данных по сети. | Alex Cones | Работа с сетью в Delphi | 2 | 06.08.2010 20:55 |
База данных по сети | Berr | Работа с сетью в Delphi | 2 | 17.03.2010 21:27 |
Передача данных по сети. | ROD | Общие вопросы C/C++ | 3 | 18.06.2009 09:41 |