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

UptoLike

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

- 50 -
end;
{ Создать строку заголовка типа содержимого файла }
FileTypeHeader := 'Content-Type: ' + IsFileType + #13#10;
end; { конец FileTypeHeader }
function TWbServe.FileHeader: String;
var IsHeaderStr: String;
begin
{ Вставить все три строки вместе в раздел заголовка сообщения }
IsHeaderStr := 'Allow: GET, HEAD' + #13#10;
IsHeaderStr := IsHeaderStr + FileSizeHeader + FileTypeHeader;
FileHeader := IsHeaderStr;
end; { конец FileHeader }
Собственно отправка файла клиенту осуществляется процедурой Process-
DataSend (если файл чрезмерно велик, придется усложнить процедуру):
procedure TWbServe.ProcessDataSend;
var liCurByteCount: Integer; IcCurByte: Byte;
IpTransferDataPointer: PChar;
begin
if ibFileOpen then { Запрашиваемый файл открыт ? }
begin
liCurByteCount := 0; { Инициализировать счетчик байтов }
if (not Eof(TransferFile)) then { Мы уже в конце файла?)
begin
ClearBuffer(TransferBuffer, 8192); { Нет, очистить буфер передачи }
{ Считать 4’096 байтов из файла в буфер }
while ((liCurByteCount < 4096) and (not Eof(TransferFile))) do { цикл по байтам }
begin
Read(TransferFile, IcCurByte);
TransferBuffer[liCurByteCount] := Char(IcCurByte);
Inc(liCurByteCount);
end;
{ Отправить клиенту содержимое буфера }
NetSocket.SocketSendBuffer(isConnectionSocket, handle,
OWM_SOCKETEVENT, TransferBuffer, liCurByteCount,
SKT_SENDPACKET);
end
else
CloseConnection; { Весь файл отправлен, закрыть соединение }
end;
end; { конец ProcessDataSend }
Закрытие соединения осуществляет процедура CloseConnection (при этом на
end;
{ Создать строку заголовка типа содержимого файла }
 FileTypeHeader := 'Content-Type: ' + IsFileType + #13#10;
end; { конец FileTypeHeader }

function TWbServe.FileHeader: String;
var IsHeaderStr: String;
begin
{ Вставить все три строки вместе в раздел заголовка сообщения }
 IsHeaderStr := 'Allow: GET, HEAD' + #13#10;
 IsHeaderStr := IsHeaderStr + FileSizeHeader + FileTypeHeader;
 FileHeader := IsHeaderStr;
end; { конец FileHeader }

   Собственно отправка файла клиенту осуществляется процедурой Process-
DataSend (если файл чрезмерно велик, придется усложнить процедуру):

procedure TWbServe.ProcessDataSend;
var liCurByteCount: Integer; IcCurByte: Byte;
      IpTransferDataPointer: PChar;
begin
 if ibFileOpen then { Запрашиваемый файл открыт ? }
 begin
 liCurByteCount := 0; { Инициализировать счетчик байтов }
 if (not Eof(TransferFile)) then { Мы уже в конце файла?)
 begin
 ClearBuffer(TransferBuffer, 8192); { Нет, очистить буфер передачи }
{ Считать 4’096 байтов из файла в буфер }
 while ((liCurByteCount < 4096) and (not Eof(TransferFile))) do { цикл по байтам }
 begin
 Read(TransferFile, IcCurByte);
 TransferBuffer[liCurByteCount] := Char(IcCurByte);
 Inc(liCurByteCount);
 end;
{ Отправить клиенту содержимое буфера }
 NetSocket.SocketSendBuffer(isConnectionSocket, handle,
              OWM_SOCKETEVENT, TransferBuffer, liCurByteCount,
              SKT_SENDPACKET);
 end
 else
 CloseConnection; { Весь файл отправлен, закрыть соединение }
 end;
end; { конец ProcessDataSend }

  Закрытие соединения осуществляет процедура CloseConnection (при этом на

                                         - 50 -