
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
21.01.2014, 14:11:18
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
Здравствуйте! Написав сервер с использование libevent, у меня теперь стоит задача создать структуру, с помощью которой будет происходить общение клиентов с сервером. Пока пытаюсь разобрать простые примеры. Необходимо передать структуру по сети от клиента серверу. Для получения представления, как это работает, я использую простые сокеты и их методы send и recv. Думаю, так как аналогичные методы libevent принимают и передают массив байт, как и методы для сокетов, то разницы не будет. Пока пробую следующее: Отправка: Код: plaintext 1. Прием: Код: plaintext 1. , где msg это объект структуры - не важно какой у неё набор полей(наверно). Естественно структуры на сервере и клиенте дублируются, то есть идентичны. Ибо у меня с первого раза ничего не работает, этот случай не стал исключением. Собственно, пример является только одним из многих вариантов попробованных мной. Если кто-нибудь пробовал передать структуру по сети, знает как это сделать или просто есть идея, буду рад всем вариантам. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 14:20:13
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
Именно так как ты написал это и делается. Если у тебя что-то не работает, это твой баг. Тебе и ловить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 14:23:16
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
Dimitry Sibiryakov, Хорошо, буду глядеть, что не так. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 14:34:25
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
La France, Если речь идет о бинарной передаче, то в силу того, что клиент и сервер это могут быть абсолютно разные по архитектуре хосты, а сам клиент и сервер могут быть собраны с различными настройками компилятора, тем более разной разрядностью компилятора, структуры упаковывают в так называемый сетевой формат с помощью так называемых функций конвертации uint32_t htonl(uint32_t hostlong); — конвертирует 32-битную беззнаковую величину из локального порядка байтов в сетевой; uint16_t htons(uint16_t hostshort); — конвертирует 16-битную беззнаковую величину из локального порядка байтов в сетевой; на сервере в свою очередь используются обратные приведенным для конвертировки из сетевого формата в локального хоста ntohl, ntohs Поэтому, каждый член данных структуры должен быть упакован приведенными мной функциями перед отправкой, а сама структура должна быть оформлена платформо-независимыми типами int8_t uint8_t int16_t uint16_t int32_t uint32_t int64_t uint64_t .... которые нивелируют разрядность компилятора. Ну, а текстовый формат ты можешь слать как угодно, хоть в JSON, хоть XML, хоть в своем собственном формате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 15:14:07
|
|||
|---|---|---|---|
Передача структуры по сети |
|||
|
#18+
Анатолий ШироковLa France, Если речь идет о бинарной передаче, то в силу того, что клиент и сервер это могут быть абсолютно разные по архитектуре хосты, а сам клиент и сервер могут быть собраны с различными настройками компилятора, тем более разной разрядностью компилятора, Ну вот, Толя, всю веселуху испортил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 15:21:03
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
MasterZiv, Ага) Через силу сейчас читаю информацию, еще и под конец рабочего дня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 17:03:38
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
MasterZivНу вот, Толя, всю веселуху испортил... Да ладно, откуда у автора возьмутся платформы с различной endianess... А int он нынче всегда int. В отличии от long. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 18:39:43
|
|||
|---|---|---|---|
Передача структуры по сети |
|||
|
#18+
Dimitry SibiryakovMasterZivНу вот, Толя, всю веселуху испортил... Да ладно, откуда у автора возьмутся платформы с различной endianess... А int он нынче всегда int. В отличии от long. Это int32 всегда int32, а int он как раз таки меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 19:06:02
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
White Owlа int он как раз таки меняется. Где, например? На x86 и x86_64 и GCC, и MSVC имеют int размером 32 бита. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 19:31:14
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
Dimitry Sibiryakov, А как же i8080 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2014, 07:50:04
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
Anatoly MoskovskyDimitry Sibiryakov, А как же i8080 ? Пример некорректен. Если уж рассуждать на тему х86, то в DOS целое было 16 бит. DOS, кстати, жив по сей день. http://www.freedos.org/ Какова разрядность целого в современном DOS - не знаю, давно не интересовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2014, 07:51:52
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
Dimitry SibiryakovMasterZivНу вот, Толя, всю веселуху испортил... Да ладно, откуда у автора возьмутся платформы с различной endianess... А int он нынче всегда int. В отличии от long. Не стоит по себе судить обо всем мире... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.01.2014, 07:45:04
|
|||
|---|---|---|---|
|
|||
Передача структуры по сети |
|||
|
#18+
Задачу решил следующим образом: преобразую структуру в буфер на отправителе и восстанавливаю на приемнике. Спасибо всем за советы! Теперь стоит задача шифрования передаваемых данных используя openSSL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2019749]: |
0ms |
get settings: |
11ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
161ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 413ms |

| 0 / 0 |
