ВУЗ:
Составители:
Рубрика:
- 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 -
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »
