Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Написав сервер с использование libevent, у меня теперь стоит задача создать структуру, с помощью которой будет происходить общение клиентов с сервером. Пока пытаюсь разобрать простые примеры. Необходимо передать структуру по сети от клиента серверу. Для получения представления, как это работает, я использую простые сокеты и их методы send и recv. Думаю, так как аналогичные методы libevent принимают и передают массив байт, как и методы для сокетов, то разницы не будет. Пока пробую следующее: Отправка: Код: plaintext 1. Прием: Код: plaintext 1. , где msg это объект структуры - не важно какой у неё набор полей(наверно). Естественно структуры на сервере и клиенте дублируются, то есть идентичны. Ибо у меня с первого раза ничего не работает, этот случай не стал исключением. Собственно, пример является только одним из многих вариантов попробованных мной. Если кто-нибудь пробовал передать структуру по сети, знает как это сделать или просто есть идея, буду рад всем вариантам. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 14:11 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Именно так как ты написал это и делается. Если у тебя что-то не работает, это твой баг. Тебе и ловить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 14:20 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Хорошо, буду глядеть, что не так. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 14:23 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#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, 14:34 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковLa France, Если речь идет о бинарной передаче, то в силу того, что клиент и сервер это могут быть абсолютно разные по архитектуре хосты, а сам клиент и сервер могут быть собраны с различными настройками компилятора, тем более разной разрядностью компилятора, Ну вот, Толя, всю веселуху испортил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 15:14 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Ага) Через силу сейчас читаю информацию, еще и под конец рабочего дня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 15:21 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
MasterZivНу вот, Толя, всю веселуху испортил... Да ладно, откуда у автора возьмутся платформы с различной endianess... А int он нынче всегда int. В отличии от long. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 17:03 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovMasterZivНу вот, Толя, всю веселуху испортил... Да ладно, откуда у автора возьмутся платформы с различной endianess... А int он нынче всегда int. В отличии от long. Это int32 всегда int32, а int он как раз таки меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 18:39 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
White Owlа int он как раз таки меняется. Где, например? На x86 и x86_64 и GCC, и MSVC имеют int размером 32 бита. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:06 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, А как же i8080 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:31 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDimitry Sibiryakov, А как же i8080 ? Пример некорректен. Если уж рассуждать на тему х86, то в DOS целое было 16 бит. DOS, кстати, жив по сей день. http://www.freedos.org/ Какова разрядность целого в современном DOS - не знаю, давно не интересовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 07:50 |
|
||
|
Передача структуры по сети
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovMasterZivНу вот, Толя, всю веселуху испортил... Да ладно, откуда у автора возьмутся платформы с различной endianess... А int он нынче всегда int. В отличии от long. Не стоит по себе судить обо всем мире... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 07:51 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2019749]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 438ms |

| 0 / 0 |
