Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];

Вниз

Передача данных Tcp/ip   Найти похожие ветки 

 
Снегурочка   (2009-06-23 02:56) [0]

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

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


 
Сергей М. ©   (2009-06-23 08:44) [1]

arr: array[..] of sometype;
client.socket.sendbuf(arr, sizeof(arr));


 
Dennis I. Komarov ©   (2009-06-23 08:57) [2]


> Снегурочка   (23.06.09 02:56)  
> Добрый день, я совсем недавно начал программировать, и у
> меня возник вопрос...

:-D


 
Плохиш ©   (2009-06-23 10:57) [3]


> Добрый день, я совсем недавно начал программировать

Дальше читать не стал.


 
Снегурочка   (2009-06-26 15:56) [4]

>>Сергей М. ©   (23.06.09 08:44) [1]
Спасибо большое! Простите за назойливость, но как в таком случаи принимать данные?


 
Palladin ©   (2009-06-26 15:57) [5]

client.socket.recvbuf(arr, sizeof(arr));


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


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

в хелпе

TCustomWinSocket.ReceiveBuf

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

вызов типа

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


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

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


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


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


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


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

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


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

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


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


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


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


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

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


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

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


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


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


К кому ?)


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

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


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

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


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

допустим сервер посылает массив
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-27 15:23) [18]


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


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

Это раз.

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

Это два.

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

Это три.


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

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


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


> я практик


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


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

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


 
Dennis I. Komarov ©   (2009-06-29 13:36) [22]


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

F1!!!


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


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


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


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


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


 
sniknik ©   (2009-06-29 14:43) [24]

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

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


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


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


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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.005 c
2-1246031571
rus
2009-06-26 19:52
2009.08.30
запрос в firebrid


15-1246568526
Kostafey
2009-07-03 01:02
2009.08.30
Наклепал пару заметок про EMaxima


15-1246288695
Kerk
2009-06-29 19:18
2009.08.30
Работа в Питере


15-1246132501
Loginov Dmitry
2009-06-27 23:55
2009.08.30
DBF


2-1246197040
@!!ex
2009-06-28 17:50
2009.08.30
TIdUDPServer обарбатывает сообщения только при выходе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский