Показать сообщение отдельно
  #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, когда приходит несколько пакетов в одном
Ответить с цитированием