本書は北山洋幸氏の著作である、「C++Builder6 コンポーネント活用&実践プログラミングVol.4 インターネット編 Ⅰ」を底本とし、北山氏に監修いただきました。560ページの大著、これまでとは違い実践的内容であるのが本書ですが、池田としては本書の執筆中に健康を害し、1年がかりの執筆になりながらも何とか上梓できましたので、思い入れの深い1冊です。
Delphi for .NETの環境でネットワークプログラミングを行います。
.NET FrameWorkのクラスではカバーできない実装を行うために、.NETアプリケーションでWIN32APIを使用するための「pInvoke」については詳細な説明を行い、また、Delphi for .NETならではの強力なネットワークプログラミング用コンポーネントであるIndyコンポーネントについても解説しています。
本書「はじめに」より
.NET FrameworkではWin32 APIや自作のDLLの関数を呼ぶことができる。プラットフォーム呼び出し(pInvoke)と呼ばれるこの機能は、本書における大きなテーマになった。
もう一つの大きなテーマはIndyコンポーネントである。FTPクライアントのコンポーネントしか取り上げることができなかったが、とても優れたコンポーネントであり、オープンソースなのでネットワークプログラミングのよき教科書でもある。TCP/IPのソケット通信コンポーネントもあるので、第3章もIndyコンポーネントを使うことも可能だったが、あえて .NET Frameworkのクラスを使用した。開発を行う企業やプロジェクトで、「無保証」のコードを利用することを禁じている場合があるからだ。そんな場合に純粋な .NET Frameworkクラスだけでプログラミングしなければいけなくなる。それに加えてTCP/IP通信に関するすべての選択肢を掲示しておきたかった。
(1).NET Framework上のSocketクラスを使う。
(2)既存のクラスライブラリを利用する(今回はIndyコンポーネント)。
(3)WinInet APIをプラットフォーム呼び出し(pInvoke)する。
(4)WinSockをプラットフォーム呼び出し(pInvoke)する。
ただし、(4)のアプローチは割愛している。そこまでするのは現実的でないと考えたからだ。(1)と(2)に関してVisual C++の経験者なら、MFCのCSocketクラスと比較してみて欲しい。あるいはJavaならSocketクラス等だ。
本来は .NET FrameworkはWebサービス等を指向しており、TCP/IPのレイヤーを相手にするべきではない。しかし、「すべて」を提供しなければ一過性の技術に終わってしまうことをマイクロソフトは知り抜いている。そして、その次の手は伝家の宝刀の「OSに統合」である。かつての小生なら、狡猾な手段と一蹴していただろう。だが今ではそれは必然的であり、望ましいものであると思えるようになった。なぜならば、小生が勤め人のときにさんざん臍を噛んできた、「A言語にするかB言語にするか」という問題は、原則論でいえば .NET Framworkでは関係なくなるからだ。OSに統合されるのは大いに結構ではないか。.NET Frameworkがプリインストールされていることになるのだから。
本書によって、読者が「Delphi」、「.NET Framework」、「ネットワークプログラミング」に関してどれかひとつでも収穫が得られるのなら小生としては幸いである。もちろんそのための仕掛けは工夫してあるつもりだ。もっとも、収穫がいくつなら満足なのか、それについては読者の判断に委ねるしかない。
目次
まえがき
第1部
ネットワークプログラミングの基本
第1章 ネットワーク概論
1.1
ネットワークの必要性
1.2
イーサネット
1.3
ネットワークトポロジー
1.4
MACアドレス
1.5
プロトコル
1.6
プロトコルスタック
1.7
IPアドレス
1.8
Web
1.9
ポート番号
1.10
ファイヤーウォール
1.11
ネットワーク装置
1.12
FTP
第2章
ネットワーク情報の取得
2.1
ネットワーク情報取得プログラム:netInfoProject.bdsproj
2.2
ネットワーク通信量情報取得プログラム:netPerformanceProject.bdsprojMark set
2.3
ipconfigに近いプログラム:ipConfigPorject.bdsproj
2.4
クラスの説明
第3章
ネットワーク通信
3.1
TcpListenerとTcpClientを使ったメッセージ通信:msgProject.bdsproj
3.2
Socketクラスを使った同期型通信:SyncServerProject.bdsproj/SyncClientProject.bdsproj
3.3
Socketクラスを使った非同期型通信:ASyncServerProject.bdsproj/ASyncClientProject.bdsproj
3.4
クラスの説明
第2部
インターネットからのパソコンへのアクセス
第4章
RAS APIによるダイアルアップ−プラットフォーム呼び出し(pInvoke)の利用
4.1
プラットフォーム呼び出し(pInvoke)によるWindows APIの利用
4.2
RASエントリーの表示プログラム:RasEnumProject.bdsproj
4.3
RASによるダイアルアッププログラム:RasDialProject.bdsproj
第5章
コンソール形式によるFTPクライアント
5.1
FTPクライアントコンソールプログラム:conftp.bdsproj
5.2
Windows API等の説明
第6章
GUIによるFTPクライアント−−Indyコンポーネントの利用
6.1
FTPクライアントプログラム:ftpclient.bdsproj
6.2
FTPクライアントプログラム−−機能追加版:ftpclient.bdsproj
6.3
クラスの説明
6.4
メインフォームのデザイン:ftpclientForm.nfm
付録A
ManagementObjectSearcherクラスのクエリー文字列クイックレッスン
付録B
便利なネットワークコマンド
付録C
プラットフォーム呼び出し(pInvoke)に関する補足
付録D
Indyコンポーネントライセンス
参考文献・資料
索引