|
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
|
|
Пересылка struct силами Socket'ов10.03.2012, 17:25. Показов 4789. Ответов 28
Метки нет (Все метки)
Доброго времени суток.
Как переслать структуру по сокету, читал различные форумы, но статей я так и не нашел. Как пересылаются данные. и как заполняются структуры на сервере или клиенте в зависимости кто отправляет. Как эффективно бегать по структурам (Допускается массив структур) что бы не зная их количества не выбегать за пределы.
0
|
|
| 10.03.2012, 17:25 | |
|
Ответы с готовыми решениями:
28
Struct sockaddr vs. struct sockaddr_in Как открыть struct в struct typedef struct Foo или struct Foo |
| 11.03.2012, 10:54 | |||||||||||
|
можешь как и с приемом.
Например так:
0
|
|||||||||||
|
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
|
||||||
| 11.03.2012, 11:18 [ТС] | ||||||
p.s Я использую перед отправкой структуры команду SENDSTRUCT то есть присылаю команду на сервер
0
|
||||||
| 11.03.2012, 11:32 | ||||||||||||||||||||||||||
Добавлено через 9 минут Кста еще по поводу кода:
например если у тебя возник сбой при получении (recv вернул -1, 0) то структура забьется мусором вариант исправить:
и еще ... а что такое SendStruct? указатель? если да, то sizeof(SendStruct) не верно. и тут бага
если структура. то надо так:
0
|
||||||||||||||||||||||||||
|
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
|
|
| 11.03.2012, 11:52 [ТС] | |
|
всмысле ноль в конце строки ? у мну SendStruct указатель на структуру
0
|
|
| 11.03.2012, 12:08 | ||||||||||||||||||||||||||
|
в том смысле, что strcmp читает до нуля строки, либо до первого несовпадения.
пользуй strncmp. + еще вопрос в том, как ты принял эту строку. А не принял ли ты вместе со строкой часть структуры? это тоже может стать причиной дальнейшего незапланированного поведения.
sizeof(SendStruct) - не размер структуры, а размер указателя. ->
->
Исправить - sizestruct=sizeof(SEND); // имя структуры, либо сделать SendStruct не указателем (например, если ты этот указатель передаешь в функцию, то передавать не указателем, а ссылкой), а копировать так:
1
|
||||||||||||||||||||||||||
|
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
|
|||||||||||
| 11.03.2012, 12:13 [ТС] | |||||||||||
|
так что я сделал:
В начале цикла приема я поставил cout с текстом RECV STRUCT видимо он за 2 цикла выкачивает. Но почему не идет дальше, а на все входящие комманды реагирует (сервер многопоточный) Добавлено через 2 минуты
0
|
|||||||||||
| 11.03.2012, 12:24 | ||||||||||||||||
|
вот тут начинаются проблемы:
Вот тут пришли к тому, что нужно описать прикладной протокол. если посылается команда перед основной структурой, то эта команда должно иметь четкие границы, которые ты корректно обработаешь. например, если команда - строка, то нужно чтоб она оканчивалась, например, нулем. -> тебе нужно вычитывать сначала все до нуля, потом уже структуру. либо, если команда - это фиксированный блок, то вычитывать сначала этот блок, а потом уже анализировать и получать данные дальше. Поэтому у тебя и не выходит сообщение QUIT FROM CYCLE потому что данные вычитаны и вызов recv ждет новых.
вариант - сделать переменную НЕ указателем
1
|
||||||||||||||||
|
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
|
|
| 11.03.2012, 12:37 [ТС] | |
|
Ведь можно же задержку сделать, например на отправителе поставить между
SendText и SendStruct Sleep(100) или побольше
0
|
|
| 11.03.2012, 13:30 | |||||||||||
|
Зачем?
Нужно просто принять строку вариант: (код прям тут писал, если что не так - говори)
пользовать:
Вариант решения -- снова коллектор, да который все это красиво разрулит. Код коллектора есть по теме выше, для приема строки нужно только немного переделать.Ах да! теперь сервер должен отправлять строку с нулем в конце, иначе не будет работать.
1
|
|||||||||||
| 11.03.2012, 13:30 | |
|
Помогаю со студенческими работами здесь
29
Правка реестра силами C++
Поиск в Access своими силами Авторизация на auto.ru силами Synapse
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|