Difference between revisions of "Networking/ja"

From Lazarus wiki
Jump to navigationJump to search
m (Text replace - "delphi>" to "syntaxhighlight>")
m (Fixed syntax highlighting; removed categories included in template)
 
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
{{Networking}}
 
{{Networking}}
 
  
 
{{Japanese Menu}}
 
{{Japanese Menu}}
  
このページは、Lazarusでのネットワークプログラムについてのチュートリアルを開始するページになるでしょう。この記事に、リンクやセクション、ページ、あなたのWikiへのリンクを追加していってください。このページには、一般的な情報があります。
+
このページは、Lazarus と 平易な FPC を用いたネットワークプログラムについての情報とチュートリアル/コードのページです。
  
 
(訳注:最初にこの元記事を書いた人はネットワークプログラミングの専門でなく、独学で勉強したことを書いているそうです)
 
(訳注:最初にこの元記事を書いた人はネットワークプログラミングの専門でなく、独学で勉強したことを書いているそうです)
  
__TOC__
+
== TCP/IP プロトコル ==
== その他のネットワークのチュートリアル ==
 
  
* [[Secure programming | セキュア・プログラミング]]  
+
{{Note|FPC/Lazarus には、ネットワーキングの機能を使うための様々なライブラリ(Synapse, lnet, fphttpclient, Indy,...)があるため、それらのライブラリに対して多くのサンプルコードが記述できるでしょう。 したがって、異なるライブラリに対しても同じサンプルコードを何度もみることになるかもしれません。 複数のネットワークライブラリの使用が可能なフレームワークの作り方の例について、 [http://brookframework.org] や [https://bitbucket.org/reiniero/fpctwit] フレームワークもご参照ください}}
* [[Sockets]] - TCP/IP ソケットコンポーネント
+
 
* [[lNet]] - 軽量ネットワークコンポーネント
+
=== CGI/FastCGI - REST, CRUD, チャットやブログ、ウェブページなど ===
* [[XML Tutorial/ja]] - XML はしばしばネットワーク通信で用いられます
+
 
* [[FPC and Apache Modules]]
+
これらの機能は [[fcl-web]] を使うことで可能となります。 また、 Brook フレームワーク( [http://silvioprog.github.io/brookframework this page] )でも実装されています。
  
== TCP/IP Protocol ==
+
=== SSH/Telnet クライアント、メールの送信、ファイルのダウンロードや OAuth v1.0 の例 ===
 +
[[Synapse]]のページをご覧ください。
  
=== Webserver example ===
+
=== Webサーバの例 ===
  
 
以下は 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>
+
<syntaxhighlight lang=pascal>
 
{
 
{
 
   マイクロ Pascal ウェブサーバ
 
   マイクロ Pascal ウェブサーバ
Line 129: Line 128:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Webサービス ==
 
  
W3CによるWEBサービスはネットワークの上のマシンから、別のマシンへ、共通的に利用できるように設計されたソフトウェア・システムの名称です。
+
=== FPC に備え付けの fcl-net コンポーネントを用いた TCP/IP クライアント-サーバ の例 ===
WEBサービスには、WSDLなど、「機械が処理可能」な形式で記述されているインタフェースがあります。
+
 
また、他のシステムは、多くの場合、インタフェースによってSOAPに内包されるメッセージを使用し定められた方法でウェブサービスと対話します。もしくは、RESTによる方法を取るかもしれません。
+
[http://pascalgeek.blogspot.com/2012/06/encryption-decryption-and-asynchronous.html ブログ記事における例]をご覧ください。
これらのメッセージは、通常HTTPを使用して伝達され、ウェブ関連の他の規格に関連するXMLから成りたっています。
 
  
様々なプログラミング言語で書かれ、様々なプラットホームで動くソフトウェアアプリケーションは、データをおたがいに一つのコンピュータでコミュニケーションを処理します。それと同様の方法を使って、インターネットのようなコンピュータネットワークの上でもコミュニケーションを行うために、WEBサービスを利用することができます。
+
=== HTTP ページのダウンロードや POST を用いたウェブサーバへのアップロード、external IP アドレスの取得 ===
  
この相互運用性(例えば、WindowsとLinuxアプリケーションの間など)はオープンスタンダードの運用によるものです。
+
これらの例は、 [[fphttpclient#Examples]] で見つかります(FPC/Lazarus に備え付けの fphttpclient コンポーネントを使用した例です)
OASISとW3Cはウェブサービスのアーキテクチャと標準化の策定に責任や権限がある主な委員会です。
 
  
ウェブサービス実装間の相互運用性を改良するため、WS-I委員会は、さらに定義する一連のプロフィールを規格の関連の開発をしています。
+
== Webサービス ==
  
=== FPC & Lazarus のWeb Service Toolkit===
+
[http://www.w3.org/ W3C] によると、 Web サービスとは ネットワーク越しに機械と機械を相互に利用できるように設計されたソフトウェアの名称です。
[[Web Service Toolkit]] はFPCとLazarusのWEBサービスのパッケージです。
 
  
== External Links ==
+
Web サービスは、 WSDL などのように 「機械が処理可能」 な形式で記述されているインタフェースを持ちます。 そのほかのシステムは、SOAP エンベロープに含まれるメッセージを使用したインタフェースによって定められた方法で、ウェブサービスと対話します。もしくは、RESTの原則に従うかもしれません。
 +
これらのメッセージは、一般的に HTTP を使用して伝達され、普通は他のウェブに関する規格と共同した XML から構成されています。
  
'''XML'''
+
様々なプログラミング言語で書かれ、様々なプラットホームで動くソフトウェアアプリケーションであっても、 Web サービスを利用することで、一つのコンピュータにおける内部処理と同様な方法でインターネットのようなコンピュータネットワーク越しでも、データの交換が可能になります。
  
* [http://www.w3schools.com/xml/default.asp W3Schools] Xml Tutorial
+
この相互運用性 (例えば、WindowsとLinuxアプリケーションの間など) はオープンな規格によってもたらされました。 OASIS と W3C は Web サービスのアーキテクチャと標準化に関して信頼できる主要な委員会です。
 +
また、 Web サービス実装間の相互運用性を改良するため、 WS-I 組織は、さらなる関連する標準を定義するために、一連のプロファイルを開発しています。
 +
 
 +
=== FPC & Lazarus のための Web サービスツールキット ===
 +
[[Web Service Toolkit]] は FPC と Lazarus のための WEBサービス のパッケージです。
 +
 
 +
== 以下もご参照ください ==
 +
* [[Portal:Web Development|Web Development Portal]]
 +
* [[Networking libraries|ネットワーキングライブラリ]] - 各種ネットワーキングライブラリの比較
 +
* [http://brookframework.org Brook Framework] - 完全な Free Pascal による Web アプリケーションのためのフレームワークです。 純粋な Pascal からできており、Pascal ではない言語に悩まされる必要はありません。
 +
* [http://www.fastplaz.com FastPlaz] - Pascal のための Fast Web フレームワークです。 特徴として、theme/templating や simple Model、 セッション、メーラー などなど。
 +
* [[Sockets]] - TCP/IP ソケットコンポーネント
 +
* [[fcl-net]] - FPC に備え付けのネットワーキングライブラリ
 +
* [[Indy_with_Lazarus/ja]] - 多くの機能を持つネットワーキングライブラリのインストール方法
 +
* [[lNet]] - 軽量ネットワークコンポーネント
 +
* [[Synapse]] - シリアルポートとSerial port and synchronous TCP/IP ライブラリ
 +
* [[XML Tutorial/ja]] - XML はしばしばネットワーク通信で用いられます
 +
* [[FPC and Apache Modules]]
 +
* [[fcl-web]] - fpWeb という名前でも知られており、 cgi や fastcgi、apache のモジュールからなる Web アプリケーションを作るためのライブラリです。
 +
* [[Secure programming | セキュア・プログラミング]]
 +
* [[Internet Tools]] - Synapse/wininet/Android's httpcomponents simplifying https and redirections や ダウンロードされたページを処理するための XPath/XQuery/CSS セレクタ/JSON のエンジン などのラッパー

Latest revision as of 09:08, 21 February 2020

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) 한국어 (ko) polski (pl) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報

このページは、Lazarus と 平易な FPC を用いたネットワークプログラムについての情報とチュートリアル/コードのページです。

(訳注:最初にこの元記事を書いた人はネットワークプログラミングの専門でなく、独学で勉強したことを書いているそうです)

TCP/IP プロトコル

Light bulb  Note: FPC/Lazarus には、ネットワーキングの機能を使うための様々なライブラリ(Synapse, lnet, fphttpclient, Indy,...)があるため、それらのライブラリに対して多くのサンプルコードが記述できるでしょう。 したがって、異なるライブラリに対しても同じサンプルコードを何度もみることになるかもしれません。 複数のネットワークライブラリの使用が可能なフレームワークの作り方の例について、 [1][2] フレームワークもご参照ください

CGI/FastCGI - REST, CRUD, チャットやブログ、ウェブページなど

これらの機能は fcl-web を使うことで可能となります。 また、 Brook フレームワーク( this page )でも実装されています。

SSH/Telnet クライアント、メールの送信、ファイルのダウンロードや OAuth v1.0 の例

Synapseのページをご覧ください。

Webサーバの例

以下は 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.


FPC に備え付けの fcl-net コンポーネントを用いた TCP/IP クライアント-サーバ の例

ブログ記事における例をご覧ください。

HTTP ページのダウンロードや POST を用いたウェブサーバへのアップロード、external IP アドレスの取得

これらの例は、 fphttpclient#Examples で見つかります(FPC/Lazarus に備え付けの fphttpclient コンポーネントを使用した例です)。

Webサービス

W3C によると、 Web サービスとは ネットワーク越しに機械と機械を相互に利用できるように設計されたソフトウェアの名称です。

Web サービスは、 WSDL などのように 「機械が処理可能」 な形式で記述されているインタフェースを持ちます。 そのほかのシステムは、SOAP エンベロープに含まれるメッセージを使用したインタフェースによって定められた方法で、ウェブサービスと対話します。もしくは、RESTの原則に従うかもしれません。 これらのメッセージは、一般的に HTTP を使用して伝達され、普通は他のウェブに関する規格と共同した XML から構成されています。

様々なプログラミング言語で書かれ、様々なプラットホームで動くソフトウェアアプリケーションであっても、 Web サービスを利用することで、一つのコンピュータにおける内部処理と同様な方法でインターネットのようなコンピュータネットワーク越しでも、データの交換が可能になります。

この相互運用性 (例えば、WindowsとLinuxアプリケーションの間など) はオープンな規格によってもたらされました。 OASIS と W3C は Web サービスのアーキテクチャと標準化に関して信頼できる主要な委員会です。 また、 Web サービス実装間の相互運用性を改良するため、 WS-I 組織は、さらなる関連する標準を定義するために、一連のプロファイルを開発しています。

FPC & Lazarus のための Web サービスツールキット

Web Service Toolkit は FPC と Lazarus のための WEBサービス のパッケージです。

以下もご参照ください

  • Web Development Portal
  • ネットワーキングライブラリ - 各種ネットワーキングライブラリの比較
  • Brook Framework - 完全な Free Pascal による Web アプリケーションのためのフレームワークです。 純粋な Pascal からできており、Pascal ではない言語に悩まされる必要はありません。
  • FastPlaz - Pascal のための Fast Web フレームワークです。 特徴として、theme/templating や simple Model、 セッション、メーラー などなど。
  • Sockets - TCP/IP ソケットコンポーネント
  • fcl-net - FPC に備え付けのネットワーキングライブラリ
  • Indy_with_Lazarus/ja - 多くの機能を持つネットワーキングライブラリのインストール方法
  • lNet - 軽量ネットワークコンポーネント
  • Synapse - シリアルポートとSerial port and synchronous TCP/IP ライブラリ
  • XML Tutorial/ja - XML はしばしばネットワーク通信で用いられます
  • FPC and Apache Modules
  • fcl-web - fpWeb という名前でも知られており、 cgi や fastcgi、apache のモジュールからなる Web アプリケーションを作るためのライブラリです。
  • セキュア・プログラミング
  • Internet Tools - Synapse/wininet/Android's httpcomponents simplifying https and redirections や ダウンロードされたページを処理するための XPath/XQuery/CSS セレクタ/JSON のエンジン などのラッパー