|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.11.2014, 01:20 | #1 |
Регистрация: 13.10.2013
Сообщений: 6
|
Передача Record с дин. массивом через SendBuf()
Здравствуйте! Имеется такая структура:
Код:
Но, как я ни пытался, ничего годного не выходит. Вот так, например, приходит только часть пакета, и то не те значения, что отправлялись: Сервер: Код:
Код:
|
22.11.2014, 10:41 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я могу.
Передавай перед массивом его длину. Он у тебя динамический, потому и не передается ничего. Т.е. Код:
I'm learning to live...
|
22.11.2014, 17:45 | #3 |
Регистрация: 13.10.2013
Сообщений: 6
|
А принимать по такому же принципу?
Пытаюсь принимать так, полная чушь приходит: Код:
Последний раз редактировалось Stilet; 22.11.2014 в 19:01. |
22.11.2014, 19:01 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну да. Сначала байт и слово (или как там порядок) а потом кучу байтов в количистве уже известном.
Цитата:
Код:
I'm learning to live...
Последний раз редактировалось Stilet; 22.11.2014 в 19:04. |
|
22.11.2014, 21:44 | #5 |
Регистрация: 13.10.2013
Сообщений: 6
|
Ну, в общем-то, всё работает.
Теперь изменил структуру, добавил массив Char и String, и теперь уже они не хотят передаваться. А остальные элементы структуры передаются хорошо. Структура: Код:
Код:
Код:
UPD.: Поменял все знаки '<' на '<=', теперь доходят первые два символа алфавита, а дальше тоже самое.. Последний раз редактировалось Skeich; 22.11.2014 в 22:04. |
23.11.2014, 00:11 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Красавчик ) Может тогда тебе сначала стоит поглубже изучить компонент ServerSocket и его принцип работы? А потом ответь себе на вопрос - почему используешь именно его. Ведь есть другие компоненты, у которых функционал поболее и поудобнее. Я намекаю на INDI. Просто если продолжишь писать так и далее тебе придется учитывать много факторов. Например склейка пакетов. И если с отправкой одномерного массива все просто - считаешь в цикле сколько пришло и сколько осталось, то массив строк - двумерный массив байт, а тут уже придется изголиться, и делить пришедший пакет не только на элементы массива, а еше и на элементы строки. В общем так! Вот что бы я сделал на твоем месте: Засунул всю информацию в Stream. Естесственно структурировав ее как-то, а потом по FTP передал бы ее серверу.
I'm learning to live...
|
|
23.11.2014, 10:56 | #7 | |
Регистрация: 13.10.2013
Сообщений: 6
|
Цитата:
|
|
23.11.2014, 11:37 | #8 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Повторю идею: Данные засовываешь в TMemoryStream, передаешь по FTP. Принимающая сторона получает их в виде TStream (Потому я на FTP и намекаю), который ты уже разбираешь по прибытии. Упрощается сама паковка и передача данных. Цитата:
I'm learning to live...
|
||
23.11.2014, 19:22 | #9 |
Регистрация: 13.10.2013
Сообщений: 6
|
|
23.11.2014, 19:39 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Это я о компонентах IdFTP(Server) от INDI.
I'm learning to live...
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Файлы и дин. переменные. Изменить с использованием дин. переменных. | Маленыч | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 07.06.2012 11:17 |
передать массив через Socket.SendBuf(); | raketa161 | Работа с сетью в Delphi | 14 | 19.05.2012 15:01 |
из дин. дека в дин. стек (Borland С++) | mego4el | Помощь студентам | 1 | 07.07.2011 14:41 |
Передача записи (Record) с данными посети (Indy) | Archangel_x | Работа с сетью в Delphi | 3 | 06.06.2011 11:38 |
передача данных типа Record... | Рустам | Работа с сетью в Delphi | 4 | 24.01.2010 09:51 |