Главная страница
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.032 c
3-1108827860
Sour
2005-02-19 18:44
2005.03.20
Service is currently busy: Display User


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


10-1048328030
Guru
2003-03-22 13:13
2005.03.20
Клиент/серверное приложение с авторизацией


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


6-1105873322
ole
2005-01-16 14:02
2005.03.20
Автоназначаемый порт в TIdTCPServer