Difference between revisions of "Networking/ja"
m (→Webserver example: slight change) |
m (Text replace - "delphi>" to "syntaxhighlight>") |
||
Line 23: | Line 23: | ||
以下は Synapse ライブラリを用いて記述した http サーバの例です。Mac OS Xでテストしました。ただし、Mac OS Xの socket ユニットでは定数 MSG_NOSIGNAL が定義されていないため、Synapse のソースに定数定義 MSG_NOSIGNAL = $20000 を追加してコンパイルしました(訳注 : 2010年9月現在SVNで流れている Synapse の新バージョンでは、上記の定数が追加されており、無修正でコンパイルできます)。 | 以下は Synapse ライブラリを用いて記述した http サーバの例です。Mac OS Xでテストしました。ただし、Mac OS Xの socket ユニットでは定数 MSG_NOSIGNAL が定義されていないため、Synapse のソースに定数定義 MSG_NOSIGNAL = $20000 を追加してコンパイルしました(訳注 : 2010年9月現在SVNで流れている Synapse の新バージョンでは、上記の定数が追加されており、無修正でコンパイルできます)。 | ||
− | < | + | <syntaxhighlight> |
{ | { | ||
マイクロ Pascal ウェブサーバ | マイクロ Pascal ウェブサーバ | ||
Line 127: | Line 127: | ||
ConnectionSocket.Free; | ConnectionSocket.Free; | ||
end. | end. | ||
− | </ | + | </syntaxhighlight> |
== Webサービス == | == Webサービス == |
Revision as of 15:45, 24 March 2012
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
한국어 (ko) │
polski (pl) │
português (pt) │
русский (ru) │
slovenčina (sk) │
中文(中国大陆) (zh_CN) │
このページは、Lazarusでのネットワークプログラムについてのチュートリアルを開始するページになるでしょう。この記事に、リンクやセクション、ページ、あなたのWikiへのリンクを追加していってください。このページには、一般的な情報があります。
(訳注:最初にこの元記事を書いた人はネットワークプログラミングの専門でなく、独学で勉強したことを書いているそうです)
その他のネットワークのチュートリアル
- セキュア・プログラミング
- Sockets - TCP/IP ソケットコンポーネント
- lNet - 軽量ネットワークコンポーネント
- XML Tutorial/ja - XML はしばしばネットワーク通信で用いられます
- FPC and Apache Modules
TCP/IP Protocol
Webserver example
以下は Synapse ライブラリを用いて記述した http サーバの例です。Mac OS Xでテストしました。ただし、Mac OS Xの socket ユニットでは定数 MSG_NOSIGNAL が定義されていないため、Synapse のソースに定数定義 MSG_NOSIGNAL = $20000 を追加してコンパイルしました(訳注 : 2010年9月現在SVNで流れている Synapse の新バージョンでは、上記の定数が追加されており、無修正でコンパイルできます)。
{
マイクロ Pascal ウェブサーバ
Synapseライブラリを用いた極単純なウェブサーバの実装例である。
ブロッキングモードのソケットを用いた単一スレッドアプリケーションであるため
複数のリクエストを並行して処理することはできない。
ブラウザから受け取ったヘッダは標準出力に出力される。
サービス可能なウェブページのURIは固定で、'/' のみである。
ほかのURIに対しては '504 not found' を返す。
}
program upserver;
{$ifdef fpc}
{$mode delphi}
{$endif}
{$apptype console}
uses
Classes, blcksock, sockets, Synautil, SysUtils;
{@@
コネクションに参加する。ヘッダを読み、しかるべき返信を行う
}
procedure AttendConnection(ASocket: TTCPBlockSocket);
var
timeout: integer;
s: string;
method, uri, protocol: string;
OutputDataString: string;
ResultCode: integer;
begin
timeout := 120000;
WriteLn('Received headers+document from browser:');
//リクエストラインを読み込む
s := ASocket.RecvString(timeout);
WriteLn(s);
method := fetch(s, ' ');
uri := fetch(s, ' ');
protocol := fetch(s, ' ');
//リクエストヘッダを読み込む
repeat
s := ASocket.RecvString(Timeout);
WriteLn(s);
until s = '';
// ここで出力ストリームに文書を書き込む
if uri = '/' then
begin
// 出力する文書をストリームに書く
OutputDataString :=
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'
+ ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + CRLF
+ '<html><h1>Teste</h1></html>' + CRLF;
// ヘッダをクライアントに返信する
ASocket.SendString('HTTP/1.0 200' + CRLF);
ASocket.SendString('Content-type: Text/Html' + CRLF);
ASocket.SendString('Content-length: ' + IntTostr(Length(OutputDataString)) + CRLF);
ASocket.SendString('Connection: close' + CRLF);
ASocket.SendString('Date: ' + Rfc822DateTime(now) + CRLF);
ASocket.SendString('Server: Servidor do Felipe usando Synapse' + CRLF);
ASocket.SendString('' + CRLF);
// if ASocket.lasterror <> 0 then HandleError;
//文書をブラウザに送信する
ASocket.SendString(OutputDataString);
end
else
ASocket.SendString('HTTP/1.0 504' + CRLF);
end;
var
ListenerSocket, ConnectionSocket: TTCPBlockSocket;
begin
ListenerSocket := TTCPBlockSocket.Create;
ConnectionSocket := TTCPBlockSocket.Create;
ListenerSocket.CreateSocket;
ListenerSocket.setLinger(true,10);
ListenerSocket.bind('0.0.0.0','1500');
ListenerSocket.listen;
repeat
if ListenerSocket.canread(1000) then
begin
ConnectionSocket.Socket := ListenerSocket.accept;
WriteLn('Attending Connection. Error code (0=Success): ', ConnectionSocket.lasterror);
AttendConnection(ConnectionSocket);
end;
until false;
ListenerSocket.Free;
ConnectionSocket.Free;
end.
Webサービス
W3CによるWEBサービスはネットワークの上のマシンから、別のマシンへ、共通的に利用できるように設計されたソフトウェア・システムの名称です。 WEBサービスには、WSDLなど、「機械が処理可能」な形式で記述されているインタフェースがあります。 また、他のシステムは、多くの場合、インタフェースによってSOAPに内包されるメッセージを使用し定められた方法でウェブサービスと対話します。もしくは、RESTによる方法を取るかもしれません。 これらのメッセージは、通常HTTPを使用して伝達され、ウェブ関連の他の規格に関連するXMLから成りたっています。
様々なプログラミング言語で書かれ、様々なプラットホームで動くソフトウェアアプリケーションは、データをおたがいに一つのコンピュータでコミュニケーションを処理します。それと同様の方法を使って、インターネットのようなコンピュータネットワークの上でもコミュニケーションを行うために、WEBサービスを利用することができます。
この相互運用性(例えば、WindowsとLinuxアプリケーションの間など)はオープンスタンダードの運用によるものです。 OASISとW3Cはウェブサービスのアーキテクチャと標準化の策定に責任や権限がある主な委員会です。
ウェブサービス実装間の相互運用性を改良するため、WS-I委員会は、さらに定義する一連のプロフィールを規格の関連の開発をしています。
FPC & Lazarus のWeb Service Toolkit
Web Service Toolkit はFPCとLazarusのWEBサービスのパッケージです。
External Links
XML
- W3Schools Xml Tutorial