Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.01.2014, 22:02
Noooob Noooob вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 38
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Передача информации из ListBox1

Помогите пожалуйста. Как отправить строки из ListBox1(Server) через Socket в ListBox1(Client).
Вот код:
Код:
for i:=0 to ListBox1.Items.Count - 1 do
Socket.SendText(ListBox1.Items.Strings[i]);
но он отправляет все строки(4) из ListBox1(Server) и в ListBox1(Client) помещает в 2 строки.
Ответить с цитированием
  #2  
Старый 03.01.2014, 01:12
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Noooob
Помогите пожалуйста. Как отправить строки из ListBox1(Server) через Socket в ListBox1(Client).
Вот код:
Код:
for i:=0 to ListBox1.Items.Count - 1 do
Socket.SendText(ListBox1.Items.Strings[i]);
но он отправляет все строки(4) из ListBox1(Server) и в ListBox1(Client) помещает в 2 строки.
А если передавать вот так (без цикла):
Код:
Socket.SendText(ListBox1.Items);
И принимать соответственно тоже без цикла:
Код:
ListBox1.Items := Socket.ReceiveText;

p.s. И нужно не забывать, что сообщение может быть разбито на несколько пакетов в произвольном месте. И наоборот - несколько сообщений могут быть склеены в один пакет, что в твоём случае и происходит.
Вот несколько ссылок для борьбы с этим:
  1. Приём и обработка пакетов переданных методом SendText - с учётом склеенных и полученных неполностью пакетов
  2. Процедуры передачи и приема блоков данных, с учетом фрагментации и склейки пакетов, построено на TServerSocket и TClientSocket
  3. Процедуры передачи и приема длинных блоков данных, с учетом фрагментации и возможной слепки пакетов, на компоненты TServerSocket и TClientSocket
  4. Разбиение полученных данных через ClientSocket и ServerSocket, когда приходит несколько пакетов в одном
Ответить с цитированием
  #3  
Старый 04.01.2014, 15:32
Noooob Noooob вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 38
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо. Проблему решил передачей строк через буфер
Ответить с цитированием
  #4  
Старый 04.01.2014, 17:19
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Заметил у себя ошибку.
Я имел ввиду:
Код:
// Передавать так:
Socket.SendText(ListBox1.Items.Text);

// А принимать вот так:
ListBox1.Items.Text := Socket.ReceiveText;
Но как я и писал это всё равно не решает проблему разбивки/склейки сообщений.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter