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

UptoLike

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

- 48 -
Большинство отправляемых сервером клиенту сообщений содержат одну и
ту же информацию в одинаковом формате, поэтому удобно упростить от-
правление и форматирование этой информации. Для этого служит простая
процедуру SendFullMsg (кроме стандартных сообщений отправляются строки
заголовка, даты и времени, версию MIME, реализации сервера, эти данные
также выводятся пользователю на экран):
procedure TWbServe.SendFullMsg(aSendSock:_SOCKET;
iMsg, iNewState, aiEvent: Integer;
asAdditionalMsg: String);
var IsMsgStr: String;
begin
case iMsg of { Инициализировать сообщение с помощью указанного кода ответа }
200: IsMsgStr := 'HTTP/1.0 200 OK' + #13#10;
201: IsMsgStr := 'HTTP/1.0 201 Created' + #13#10;
202: IsMsgStr := 'HTTP/1.0 202 Accepted' + #13#10;
204: IsMsgStr := 'HTTP/1.0 204 No Content' + #13#10;
301: IsMsgStr := 'HTTP/1.0 301 Moved Permanently' + #13#10;
302: IsMsgStr := 'HTTP/1.0 302 Moved Temporarily' + #13#10;
304: IsMsgStr := 'HTTP/1.0 304 Not Modified' + #13#10;
400: IsMsgStr := 'HTTP/1.0 400 Bad Request' + #13#10;
401: IsMsgStr := 'HTTP/1.0 401 Unauthorized' + #13#10;
403: IsMsgStr := 'HTTP/1.0 403 Forbidden' + #13#10;
404: IsMsgStr := 'HTTP/1.0 404 Not Found' + #13#10;
500: IsMsgStr := 'HTTP/1.0 500 Internal Server Error' + #13#10;
501: IsMsgStr := 'HTTP/1.0 501 Not Implemented' + #13#10;
502: IsMsgStr := 'HTTF/1.0 502 Bad Gateway' + #13#10;
503: IsMsgStr := ‘HTTP/1.0 503 Service Unavailable' + #13#10;
end;
{ Добавить текущую дату и время }
IsMsgStr := IsMsgStr + 'Date: ' +
FormatDateTime('ddd, d mmm yyyy hh:mm:ss “CST”', Now());
{ Отправить клиенту это и добавить строку на экран для пользователя }
NetSocket.SocketSend(aSendSock, handle, aiEvent, IsMsgStr, SKT_NOOP);
mleSent.Lines.Add(IsMsgStr);
{ Создать две строки для сообщения клиенту о ПО, обслуживающее сей запрос }
IsMsgStr := 'MIME-Version: 1.0' + #13#10;
IsMsgStr := IsMsgStr + 'Server: Delphi Web Server v1.O' + #13#10;
{ Отправить эти две строки и то, что было передано в качестве строк
информации в дополнительном заголовке; не забыть добавить их на экран)
NetSocket.SocketSend(aSendSock, handle, aiEvent,
IsMsgStr + asAdditionalMsg, SKT_NOOP);
mleSent.Lines.Add (IsMsgStr + asAdditionalMsg) ;
{ Сбросить флаг статуса текущей команды до заданного значения состояния }
iiHTTPStatus := iNewState;
  Большинство отправляемых сервером клиенту сообщений содержат одну и
ту же информацию в одинаковом формате, поэтому удобно упростить от-
правление и форматирование этой информации. Для этого служит простая
процедуру SendFullMsg (кроме стандартных сообщений отправляются строки
заголовка, даты и времени, версию MIME, реализации сервера, эти данные
также выводятся пользователю на экран):

procedure TWbServe.SendFullMsg(aSendSock:_SOCKET;
                                    iMsg, iNewState, aiEvent: Integer;
                                    asAdditionalMsg: String);
var IsMsgStr: String;
 begin
 case iMsg of { Инициализировать сообщение с помощью указанного кода ответа }
 200: IsMsgStr := 'HTTP/1.0 200 OK' + #13#10;
 201: IsMsgStr := 'HTTP/1.0 201 Created' + #13#10;
 202: IsMsgStr := 'HTTP/1.0 202 Accepted' + #13#10;
 204: IsMsgStr := 'HTTP/1.0 204 No Content' + #13#10;
 301: IsMsgStr := 'HTTP/1.0 301 Moved Permanently' + #13#10;
 302: IsMsgStr := 'HTTP/1.0 302 Moved Temporarily' + #13#10;
 304: IsMsgStr := 'HTTP/1.0 304 Not Modified' + #13#10;
 400: IsMsgStr := 'HTTP/1.0 400 Bad Request' + #13#10;
 401: IsMsgStr := 'HTTP/1.0 401 Unauthorized' + #13#10;
 403: IsMsgStr := 'HTTP/1.0 403 Forbidden' + #13#10;
 404: IsMsgStr := 'HTTP/1.0 404 Not Found' + #13#10;
 500: IsMsgStr := 'HTTP/1.0 500 Internal Server Error' + #13#10;
 501: IsMsgStr := 'HTTP/1.0 501 Not Implemented' + #13#10;
 502: IsMsgStr := 'HTTF/1.0 502 Bad Gateway' + #13#10;
 503: IsMsgStr := ‘HTTP/1.0 503 Service Unavailable' + #13#10;
 end;
{ Добавить текущую дату и время }
 IsMsgStr := IsMsgStr + 'Date: ' +
              FormatDateTime('ddd, d mmm yyyy hh:mm:ss “CST”', Now());
{ Отправить клиенту это и добавить строку на экран для пользователя }
 NetSocket.SocketSend(aSendSock, handle, aiEvent, IsMsgStr, SKT_NOOP);
 mleSent.Lines.Add(IsMsgStr);
{ Создать две строки для сообщения клиенту о ПО, обслуживающее сей запрос }
 IsMsgStr := 'MIME-Version: 1.0' + #13#10;
 IsMsgStr := IsMsgStr + 'Server: Delphi Web Server v1.O' + #13#10;
{ Отправить эти две строки и то, что было передано в качестве строк
  информации в дополнительном заголовке; не забыть добавить их на экран)
 NetSocket.SocketSend(aSendSock, handle, aiEvent,
                        IsMsgStr + asAdditionalMsg, SKT_NOOP);
 mleSent.Lines.Add (IsMsgStr + asAdditionalMsg) ;
{ Сбросить флаг статуса текущей команды до заданного значения состояния }
 iiHTTPStatus := iNewState;


                                     - 48 -