Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача данных Tcp/ip


Страницы:   1 2

Снегурочка ©   (2009-06-23 02:56:00) 

Добрый день, я совсем недавно начал программировать, и у меня возник вопрос. Как передать массив по Tcp/ip.
Как передать строковый параметр, я знаю.

///
s: string;
client.socket.sendtext(s);


Сергей М.   (2009-06-29 15:00:00) [1]


> сложить из этих "кирпичиков" свое "здание"


Не всякому по плечу ноша кума Тыквы).. Да и перспективы пугают)

А вот приверженцев девиза О.Бендера - "взял бы по частям, но нужно все сразу" - хоть отбавляй)


sniknik   (2009-06-29 14:43:00) [2]

> Но вот, другой информации я найти не могу
а что ты ищешь? если "как передавать массивы строк" то такого и не найдешь.
искать нужно, что такое массивы, что такое строки, как работает передача данных (что именно передается, и как устроено то что ты пытаешься передать).
т.е. отдельные "кирпичики" знаний, а не то что тебе в данный момент приспичило, это уже твоя работа сложить из этих "кирпичиков" свое "здание".

p.s. на "голой" практике далеко не уедешь. на ней максимум что получится, это собрать кучу "шаманских" приемов, которые сам не понимаешь как работают.


Сергей М.   (2009-06-29 13:38:00) [3]


> У меня нет хороших справочников


А подручный справочник, вызываемый по F1, совсем плох ?


> Единственное что я нашел, это то как передавать стринговую
> переменную(с этим всё понятно)


не думаю что все уж так уж понятно, но что мешает передавать одну за другой строковые поля структуры так как это понятно ?


Dennis I. Komarov   (2009-06-29 13:36:00) [4]


> Снегурочка   (29.06.09 13:29) [21]
> У меня нет хороших справочников.

F1!!!


Снегурочка   (2009-06-29 13:29:00) [5]

>Сергей М. ©   (28.06.09 20:01) [20]
Нет, не совсем так. У меня нет хороших справочников. Единственное что я нашел, это то как передавать стринговую переменную(с этим всё понятно). Но вот, другой информации я найти не могу


Сергей М.   (2009-06-28 20:01:00) [6]


> я практик


Т.е. читать справочные материалы, дабы понять о чем пошла речь, ты не желаешь из принципа, так ?


Снегурочка   (2009-06-28 12:39:00) [7]

Вы можите привести пример, как это должно быть реализовано. Так получилось, что я практик до глубины души, и мне куда прощё разобраться в вопросе если я вижу как это должно работать


Сергей М.   (2009-06-27 15:23:00) [8]


> допустим сервер посылает массив
> arr:array[1..3] of string;


Массив элементов такоготипа должен передаваться совсем по-другому.

Это раз.

Где проверка результата, возвращенного функциональнымметодом SendBuf ? Нет ее. А обязана быть. То же самое касается и ReceiveBuf.

Это два.

sizeof(arr) у тебя всегда будет равен 12, потому что в массиве на самом деле находятся указатели на управляющие структуры данных типа AnsiString, а не сами строковые данные.

Это три.


Снегурочка   (2009-06-26 19:18:00) [9]

допустим сервер посылает массив
arr:array[1..3] of string;
....
ServerSocket1.Socket.Connections[i].SendBuf(arr, sizeof(arr));
Клиент получает
...
Socket.ReceiveBuf(arr,sizeof(arr));
...

как обратится к массиву? пробывал так listbox1.items.add(arr[1]), но это не работает


Сергей М.   (2009-06-26 18:04:00) [10]

Ну как обычно : массив[элемент]


Снегурочка   (2009-06-26 17:49:00) [11]

к полученнаму массиву.


Сергей М.   (2009-06-26 17:22:00) [12]


> не знаю как к немуобратится


К кому ?)


Снегурочка   (2009-06-26 17:14:00) [13]

>Palladin ©   (26.06.09 16:35) [10]
сам знаю, просто возникла необходимость в написании одной программки(для личных нужд)


Снегурочка   (2009-06-26 17:12:00) [14]

>Сергей М. ©   (26.06.09 16:43) [11]
Я понял, что как только размер исходного совпадет с размером полученного, то он принят полностью...вопрос в том, как его использовать. Я не знаю как к нему обратится


Сергей М.   (2009-06-26 16:43:00) [15]


> как получить переданный массив


if client.socket.recvbuf(массив, sizeof(массив)) = sizeof(массив) then ты его уже получил


Palladin   (2009-06-26 16:35:00) [16]

Ты не с того начал, если честно.


Снегурочка   (2009-06-26 16:28:00) [17]

Хорошо, теперь понятно. Но я всё равно не понял как получить переданный массив.Т.е. сервер отправляет массив со значением. Клиент принимает его.
Ещё раз прошу прощение за свою тугодумасть, я только начинаю программировать(


Вариант   (2009-06-26 16:22:00) [18]


> Снегурочка   (26.06.09 16:19) [7]


Передаем параметром буфер для приема и максимальный размер, который можем принять (не более размера буфера). Возвращает число действительно принятых байт


Снегурочка   (2009-06-26 16:19:00) [19]

>Palladin ©   (26.06.09 15:57) [5]
Я сразу так и подумал, но только я не могу понять чему присваивать это:client.socket.recvbuf(arr, sizeof(arr));
Вариант   (26.06.09 16:10) [6]
не совсем понимаю...у меня массив из строк, а функция возвращает интеджер.


Вариант   (2009-06-26 16:10:00) [20]


> Снегурочка   (26.06.09 15:56) [4]

в хелпе

TCustomWinSocket.ReceiveBuf

function ReceiveBuf(var Buf; Count: Integer): Integer;

вызов типа

client.socket.ReceiveBuf(arr[0], sizeof(arr));


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо