|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"WWWサーバを作る"
最近ネットワークがらみの話題が多いが,スタンドアロンのアプリケーションしか手がけていなかったプログラマにありがちな,ネットワーク,インターネットテクノロジーに対する「心理的な壁」を取り除こうというコンポーネント.簡単なサーバの自作をしてみれば,キーテクノロジーはすでに手の内にあるということに気が付くのではないか.
実際の運用で使うのは,IIS や apache だとしてもである.
使い方:
1. コンポをフォームに貼り付けて,TCP/IP をインストールしてあるマシンで起動する.2. そのマシンでブラウザを起動して URL にhttp://127.0.0.1と入れてリターンすると
This is a test data by THttpTest.
と表示されるはず.起動したマシンと別のマシンから読むには,サーバのIPアドレスを入れる.サーバのIPアドレスは DOS窓でipconfig と打つと分かる.
ルータ等を適切に設定すれば,インターネットを通して読むことももちろんできる.
------------------------------------------------------------------------------
unit HttpTest;
interface
uses
Windows, Messages, SysUtils, Classes, Psock, NMConst, ActiveX;
type
THttpTest = class(TNMGeneralServer)
public
constructor Create(AOwner: TComponent); override;
procedure Serve; override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents( 'Internet', [ THttpTest ]);
end;
{ THttpTest }
function MakeGMT: string;
var
DT: TDateTime;
ST: SYSTEMTIME;
const
DayOfWeekNames: array[0..6] of string =
('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
MonthNames: array[1..12] of string =
('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
begin
GetSystemTime( ST );
DT := SystemTimeToDateTime(ST);
// ex. 'Mon, 07 Feb 2000 13:54:16 GMT'
Result := DayOfWeekNames[ST.wDayOfWeek] + ', '
+ FormatDateTime('dd ', DT)
+ MonthNames[ST.wMonth] + ' '
+ FormatDateTime('yyyy hh:nn:ss ',DT)
+ 'GMT';
end;
const CRLF = #$0d#$0a;
constructor THttpTest.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Port := 80;
end;
procedure THttpTest.Serve;
var
Header, Body: string;
begin
// 来たデータは全部無視
// Header
Header := 'HTTP/1.0 200 OK' + CRLF
+ 'Server: THttpTest/1.0'+ CRLF
+ 'Date: ' + MakeGMT + CRLF
+ 'Content-Type: text/plain' + CRLF
+ 'Connection: close' + CRLF
+ CRLF;
write( Header );
// Body :要するにこの部分に何かを入れて返すというのがサーバの仕事
Body := 'This is a test data by THttpTest.';
write( Body );
Application.ProcessMessages;
disconnect;
end;
TN(CQJ01721)
- FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 00/12/31 -
Original document by TN 氏 ID:(CQJ01721)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|