2001年3月17日土曜日

[OS][設定] Windowsでサーバー構築

システム奮闘記:その45
C言語で足し算サーバープログラムの作成
(2006年1月7日に掲載)
クライアント・サーバーとはプロセス間通信
クライアントとサーバーの違い。
教科書的には、クライアントは要求する側、サーバーは提供する側となる。
教科書的な説明
クライアントは要求を行い、サーバーは要求内容を提供する側
クライアントはサーバーに対して情報やデータの要求を行い、サーバーはクライアントからの要求に応じて、返答として、該当する情報やデータを送る。
だが、一般的に言われているクライアント・サーバーを、もっと突き詰めて考えて行くと以下のようになる。
クライアント・サーバー間の通信の本質
クライアント・サーバー間の通信の本質は異種間マシンのプロセス間通信
異なるコンピューター同士のプロセス間の通信の事を指している場合が多い。
TCP/IPでの通信を実現させるのには、Linuxの場合、ソケットというシステムコールを使って実現させる。
そこで今回は、ソケットを使って足し算サーバープログラムを作るまでの経緯を書く事にしました
クライアント・サーバーとの出会い
クライアントとサーバーという言葉。
その出会いは古い。12年前の1994年に遡る。大学2年の時だった。
大学のUNIXが置いてある部屋で、メールとWebにハマっていたのだ。
サーバー機があり、学生が使うのはX端末だった。
通称、ペケ端だ。
クライアントとサーバーの違いは、サーバー機か端末の違いという認識を持っていた。
だが、大学3年の時に研究室配属で、Windows95が入ったパソコンでも、FreeBSDやLinuxを使えば、サーバーが構築できる事を知る。
  この時、サーバー機能は、マシンといったハードではなく、
OSで実現させる物だと思い込んだ。
FreeBSDやLinuxはサーバーOSで、Windows95はクライアントOS。
サーバーOSを使えば、パソコンでもサーバーができる。そんな認識だった。
だが、だいぶ後になり、FrontPageを使えば、Windows98でもWebサーバーが構築できる事を知った。この時は
クライアントでもサーバーができるのか!
だった。
何せ、Winows98はクライアントOSであり、サーバーOSではないので、サーバー機能を使う事ができるという発見は、驚きだったのだ。
ここで初めてサーバー機能は、OSではなく、サーバーソフトで実現させる物だというのを知った。
その後、システムを触るのが好きな私は、実験的に、Windows2000Proで、メールサーバーを構築したり。IISでWebサーバーを構築したりして、
クライアントOSのサーバー利用を試したりしていた。
Windows2000Proのメールサーバーの話は、「システム奮闘記:その32」をご覧ください。
そんな感じでクライアントとサーバーの違いを、紆余曲折しながらも理解(?)していったのだった。
クライアント・サーバーのプログラムに挑戦だがクライアント・サーバーのプログラミング。
実は、結構前からプログラミングしてみたい!
と思っていた。
2001年に「新版 応用C言語」(三田 典玄:オーム社)を購入した時、
TCP/IPプログラミングの話を触れている。
当時、「これでサーバープログラムを書けるように」と思ったのだが、ここはいつも如く・・・
難しすぎて、わからへん (TT)
だった。
今にして覚えば、無謀な話だった。
ポインタを全く理解していないのに、返り値が「**のポインタ」という記述を見ても、わかるわけがない。
それに、inetdを使ったプログラムだったので、当時の私に
inetdなんぞ知るわけもないのらー!!
という感じだった (^^;;
ちなみに、inetdが何なのかを知ったのは、2005年になってからだった。
詳しくは「システム奮闘記:その38」をご覧ください。
(スーパーデーモン xinetdの設定)をそのため見事に撃沈してしまったのだった。

システム奮闘記
http://www.geocities.jp/sugachan1973/doc/funto45.html
http://www.geocities.jp/sugachan1973/

0 件のコメント:

コメントを投稿