1998 年 5 月 21 日に変更されました。
この FAQ は Andrew Gierth 氏 ( andrew@erlenstar.demon.co.uk) の多大なる助力のもと、Vic Metcalfe ( vic@acm.org) によって維持されています。私は本物のウイザード達に頼りながら詳細 な部分を補填し、私の(疑いなく)たくさんの間違いを修正してもらって います。この FAQ のプログラム例は、流れを追い、理解をし易くする ために書かれました。これをその分だけ有用にできるかは読者次第です。 私がこの FAQ を始めたのは、comp.unix.programmer を少し読んでみて、 ソケットのためのFAQ が必要だということが明白になったからです。
この FAQ は以下の場所から取得可能です。
news.answers, comp.answers, comp.unix.answers, comp.unix.programmer
http://www.ibrado.com/sock-faq http://kipper.york.ac.uk/~vic/sock-faq http://www.ntua.gr/sock-faq
もしあなたが、解答を修正したいと思ったり、より明確にしたいと思っ た場合には、私に メール をお願いします。また、このリストに質問を追加したいときにも私 に連絡を頂きたいと思っています。私はそれに答えられないかもしれま せんが、どなたかが解答を送ってくれることを期待してそれを追加する ことならできます。私はこうしている間にもさらに忙しくなってきてい るので、もし私があなたのメールへ返事を書くのが遅くなってしまって も、どうかご辛抱ください。一週間以上も経ってしまうと、私はよくメッ セージを後回しにしたまま忘れてしまうことがあるので、またメールを 書いていただいた方が良いかもしれません。私はもっとメールの扱いを 上手にならなければならないのですが、それまではお気軽に私をちょこっ と急っついてください。
日本語訳への注: この FAQ の日本語版は、Keisuke Mori ( ksk@kt.rim.or.jp)が翻訳し、以下で公開しています。誤訳、 不適切な訳の指摘については 訳者 の方にメールを頂ければ 幸いです。
この FAQ は、UNIX 環境における C プログラマのためのものです。 WinSock プログラマや Perl や Java その他向けのものではありません。 私は別に Windows や Perl に反抗しているのではなくて、最初の草稿 としてこの FAQ の範囲を制限しなければならなかったのです。将来は、 私は Perl や Java やおそらくその他の例についても提供したいと本当 に思っています。ですがとりあえずは、C に関する正確さと完全さに集 中していきます。
この版の FAQ では AF_INET ファミリのソケットについてのみ取り扱い ます。それはこれが最も一般的に使われているからです。その他のソケッ トの種類についての範囲は今後追加されるかもしれません。
ソケットとは、空想科学における「ワームホール」のようなものです。
ある物を一方から入れると、それが反対側から出てくる(はず)というも
のです。違った種類のソケットは違った属性を持っています。ソケット
にはコネクション指向のものとコネクションレスのものとがあります。
コネクション指向のソケットは必要に応じてデータを行ったり来たりさ
せることができるのに対し、コネクションレス(データグラムとも呼ば
れる)のソケットは、接続を開くことはなく、同時に一つのメッセージ
のみしか転送できません。また、ソケットファミリが異なるものもあり
ます。最も一般的なものの二つは、インターネット接続のための
AF_INET
と、UNIX IPC(プロセス間通信)のための AF_UNIX
です。前述のように、この FAQ では AF_INET
ソケットのみを扱
います。
実装はあなたがお使いの UNIX のベンダーに任されていますが、プログ
ラマの観点から見れば、コネクション指向ソケットはあたかもファイル
やパイプであるかのように動作します。ひとたびファイルディスクリプ
タを得た後の最も顕著な違いは、read()
または write()
の
呼び出しは、実際には要求されたよりも少ないバイト数しか読み出し/
書き込みしないかも知れないということです。その場合には残りのデー
タのためにもう一度呼び出しを行なわなければなりません。
この FAQ に付属するソースコード にこの例があります。
以下に私の知っているネットワークプログラミング本のソースコードを 取得できる場所をリストアップします。非常に少ないので、他に何かご 存知でしたら私にメールをください。
Title: Unix Network Programming
Author: W. Richard Stevens
(
rstevens@noao.edu)
Publisher: Prentice Hall, Inc.
ISBN: 0-13-949876-1
URL:
http://www.noao.edu/~rstevens
訳注: 邦訳版の情報は以下の通り
題名: UNIX ネットワークプログラミング
訳: 篠田陽一
出版社: トッパン
ISBN: 4-8101-8509-5
Title: Power Programming with RPC
Author: John Bloomer
Publisher: O'Reilly & Associates, Inc.
ISBN: 0-937175-77-3
URL:
ftp://ftp.uu.net/published/oreilly/nutshell/rpc/rpc.tar.Z
Lokmanm Merican 氏 (lokmanm#pop4.jaring.my@199.1.1.88) の推薦:
Title: UNIX PROGRAM DEVELOPMENT for IBM PC'S Including OSF/Motif
Author: Thomas Yager
Publisher: Addison Wesley, 1991
ISBN: 0-201-57727-5
私の知っている情報源のコピーを、Web 上の私の socks ページで保持 しています。これらのほとんどのものはどこから貰ってきたか憶えてい ないのですが、いつの日かその出所を確認して、ftp 情報をここで提供 します。とりあえず今は http://www.ibrado.com/sock-faq でそれらを取得できます。
George Neville-Neil 氏( gnn@wrs.com) によって維持されているとても良い TCP/IP FAQ が http://www.visi.com/~khayes/tcpipfaq.html にあります。