Вниз
Скачать: CL | DM;

Информация от сервера.   Найти похожие ветки 

 
Новичек ©   (2005-01-18 01:03) [0]

Здравствуйте, уважаемые Мастера.
Вот кусок стандартного кода:
procedure TForm1.MySocketRead(Sender: TObject; Socket: TCustomWinSocket);
var
Buffer: AnsiString;
LengthOfBlock: Integer;
BufOfSocket: PChar;
begin
  LengthOfBlock := Socket.ReceiveLength;
  GetMem(BufOfSocket, LengthOfBlock + 1);
  Socket.ReceiveBuf(BufOfSocket[0], LengthOfBlock);
  Buffer := Buffer + BufOfSocket;
  FreeMem(BufOfSocket);

  ShowMessage(Buffer);
  exit;
end;

ПредисловиеВопрос такой:
По протоколу TCP/IP сервер передает информацию, как известно,  блоками. Размер блока, допустим, 600 байт. Информация для передачи клиенту "весит", к примеру, 2К. Событие OnRead наступает при приеме КАЖДОГО блока и, соответственно, много раз выскакивает ShowMessage.
Вопрос такой:
А как добиться полной загрузки информации в Buffer и ShowMessage срабатывало только раз? Смотрел сниффером передаваемые блоки - никакой зацепки :-(. Сервер в любом месте рвет передачу и возобновляет в следующем блоке.
С уважением, Сергей.


 
Eraser ©   (2005-01-18 01:09) [1]

Есть несколько путей, можно либо использовать стоповые байты, если передаётся текст, либо вначале пересылать размер данных, а потом принимать эти данные в буффер, который передавать после завершения передачи всх данных в showmessage.
Вообще почитай инфу для начинающих по созданию программ на базе TCP/IP.


 
Новичек ©   (2005-01-18 01:17) [2]

Вся беда в том, что мне недоступно программирование сервера, а посему нет возможности как-то уведомить клиента. Сервер просто отдает информацию когда посчитает нужным :-(
Уже полез в заголовки пакетов, может, что-нибудь откопаю :-)


 
Новичек ©   (2005-01-18 01:43) [3]

Решил проблему. Правда, через ж... :-)



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.038 c
6-1105938265
Kacnep
2005-01-17 08:04
2005.03.20
Разбираюсь с ФТП. Пробовал компоненты ФастНета и Инди.


1-1109835699
salexn
2005-03-03 10:41
2005.03.20
Совместимость Clipboard и русских букв


4-1107359335
grigory
2005-02-02 18:48
2005.03.20
Как узнать есть ли на форме панель?


14-1109577493
Чеширский_Кот
2005-02-28 10:58
2005.03.20
Михаил Боярский


6-1105444565
Grant
2005-01-11 14:56
2005.03.20
TClientSocket & TServerSocket




   Наверх