Сетевые технологии. Баканов В.М. - 58 стр.

UptoLike

Составители: 

- 58 -
OnPacketRecvd Генерируется каждый раз, когда отдельный пакет принимается от
удаленного сервера в рамках HTTP-сессии (событие удобно при
организации индикатора прогресса приема).
OnPacketsent Возникает каждый раз, когда пакет данных пересылается удален-
ному серверу.
OnStatus Генерируется каждый раз, когда удаленный сервер очередное со-
общение об изменении статуса.
При создании простейшего WEB-броузера обрабатываются (в качестве
примера) только события
OnPacketRecvd и OnStatus, используются методы Get
и
Stop:
procedure TForm1.NMHTTP1PacketRecvd(Sender: TObject);
{ вызывается при наступлении события OnPacketRecvd объекта NMHTTP1 }
begin
StatusBarInfo.SimpleText:=IntToStr(NMHTTP1.BytesRecvd)+
' байт из общего числа ' +IntToStr(NMHTTP1.BytesTotal)+
' получено';
end; { конец NMHTTP1PacketRecvd }
procedure TForm1.NMHTTP1Status(Sender: TComponent; Status: String);
{ вызывается при наступлении события ОnStatus объекта NMHTTP1 }
begin
if NMHTTP1.ReplyNumber = 404 then { совсем плохо... }
StatusBarInfo.SimpleText:='Запрошенный ресурс не найден';
end; { конец NMHTTP1Status }
procedure TForm1.ButtonConnectClick(Sender: TObject);
{ нажатие кнопки Connect }
begin
if EditURL.Text = '' then { если пусто… }
begin
ShowMessage('Поле адреса целевого сервера не может быть пустым...');
exit;
end;
{ настройка броузера }
NMHTTP1.HeaderInfo.UserId:=EditUser.Text; { идентификатор пользователя }
NMHTTP1.HeaderInfo.Password:=EditPassword.Text; { пароль }
NMHTTP1.Proxy:=EditProxy.Text; { адрес прокси-сервера }
NMHTTP1.ProxyPort:=StrToInt(EditProxyPort.Text); { номер порта прокси-сервера }
NMHTTP1.Port:=StrToInt(EditPort.Text); { номер порта сервера }
NMHTTP1.InputFileMode:=False; { работа не с именем, а с содержимым файла }
NMHTTP1.Get(EditURL.Text);{ имя запрашиваемого файла взять из строки ввода }
EditIP.Text:=NMHTTP1.RemoteIP; { показать IP-адрес сервера }
MemoHeader.Text:=NMHTTP1.Header; { показать заголовок ответа от сервера }
{ запрошенный файл получен в NMHTTP1.Body. Именно теперь следует опи-
сать процедуру его анализа, запроса составляющих (изображений etc) и
OnPacketRecvd       Генерируется каждый раз, когда отдельный пакет принимается от
                    удаленного сервера в рамках HTTP-сессии (событие удобно при
                    организации индикатора прогресса приема).
OnPacketsent        Возникает каждый раз, когда пакет данных пересылается удален-
                    ному серверу.
OnStatus            Генерируется каждый раз, когда удаленный сервер очередное со-
                    общение об изменении статуса.

  При создании простейшего WEB-броузера обрабатываются (в качестве
примера) только события OnPacketRecvd и OnStatus, используются методы Get
и Stop:

procedure TForm1.NMHTTP1PacketRecvd(Sender: TObject);
{ вызывается при наступлении события OnPacketRecvd объекта NMHTTP1 }
begin
 StatusBarInfo.SimpleText:=IntToStr(NMHTTP1.BytesRecvd)+
                     ' байт из общего числа ' +IntToStr(NMHTTP1.BytesTotal)+
                     ' получено';
end; { конец NMHTTP1PacketRecvd }

procedure TForm1.NMHTTP1Status(Sender: TComponent; Status: String);
{ вызывается при наступлении события ОnStatus объекта NMHTTP1 }
begin
 if NMHTTP1.ReplyNumber = 404 then { совсем плохо... }
  StatusBarInfo.SimpleText:='Запрошенный ресурс не найден';
end; { конец NMHTTP1Status }

procedure TForm1.ButtonConnectClick(Sender: TObject);
{ нажатие кнопки Connect }
begin
 if EditURL.Text = '' then { если пусто… }
 begin
  ShowMessage('Поле адреса целевого сервера не может быть пустым...');
  exit;
 end;

{ настройка броузера }
 NMHTTP1.HeaderInfo.UserId:=EditUser.Text; { идентификатор пользователя }
 NMHTTP1.HeaderInfo.Password:=EditPassword.Text; { пароль }
 NMHTTP1.Proxy:=EditProxy.Text; { адрес прокси-сервера }
 NMHTTP1.ProxyPort:=StrToInt(EditProxyPort.Text); { номер порта прокси-сервера }
 NMHTTP1.Port:=StrToInt(EditPort.Text); { номер порта сервера }
 NMHTTP1.InputFileMode:=False; { работа не с именем, а с содержимым файла }
 NMHTTP1.Get(EditURL.Text);{ имя запрашиваемого файла взять из строки ввода }
 EditIP.Text:=NMHTTP1.RemoteIP; { показать IP-адрес сервера }
 MemoHeader.Text:=NMHTTP1.Header; { показать заголовок ответа от сервера }

{ запрошенный файл получен в NMHTTP1.Body. Именно теперь следует опи-
  сать процедуру его анализа, запроса составляющих (изображений etc) и

                                       - 58 -