Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: 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 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.03 c
14-1108543241
WondeRu
2005-02-16 11:40
2005.03.20
Все статьи DelphiWorld в 20Мб!!! Качать!!!


1-1109774205
Anatoliy T.
2005-03-02 17:36
2005.03.20
Установлен ли Word


1-1109933913
Cat
2005-03-04 13:58
2005.03.20
Сравнение дат


1-1110063396
qqq2
2005-03-06 01:56
2005.03.20
Ошибочка


14-1109346555
Cosinus
2005-02-25 18:49
2005.03.20
Господа, хорошо знающие asm, подскажите реализацию...