Главная страница
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.039 c
1-1110087380
TeNY
2005-03-06 08:36
2005.03.20
В какой тип данных можно сохранить и Bitmap и Ansistring?


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


3-1108698060
Ярослав
2005-02-18 06:41
2005.03.20
FireBird Embeded & Win98


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


10-1086872365
Kraj
2004-06-10 16:59
2005.03.20
Чат на основе сокетов