Главная страница
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.025 c
14-1109754578
Роман Ющенко
2005-03-02 12:09
2005.03.20
Для boriskb, Игоря Шевченко, Юрия Зотовава и т.д.


14-1109397071
КочегинМихаил
2005-02-26 08:51
2005.03.20
Нужна помощь!!!


1-1109907283
rainy_day
2005-03-04 06:34
2005.03.20
Как назначить обработчик для события?


9-1103886504
normalING
2004-12-24 14:08
2005.03.20
Физика


1-1110118487
Checist [root]
2005-03-06 17:14
2005.03.20
Формы наносят ответный удар