ネットワークプログラミングの基礎知識
TOP >> ネットワークプログラミングの基礎知識
ここでは IP アドレスやポート番号、クライアントとサーバの役割などを説明し、
perl・C言語・Java などでソケット (Socket) を使った HTTP クライアントや
POP3 クライアント、簡単なサーバを作成してみます。
要はネットワークプログラミングをやってみよう、ということです。
このページのサンプルプログラムは、RFC などの規格に準拠した「正しい」プログラムではありません。
また、全体的にエラー処理が不十分です (今後改善する予定です)。
あくまでも概要を理解するためのサンプルととらえてください。
もし本気でしっかりとしたクライアントやサーバを書きたいなら、このページを読んだ上で、
さらに RFC を熟読し、そして wget・Apache・ftp コマンドなどのソースを参考にしてください。
このページに間違いを見付けたら、掲示板 で教えていただけると幸いです。
基本的に FreeBSD・Linux などの UNIX 系 OS を使っている人を対象として書きましたが、
Windows ユーザにも理解できるように補足を入れたつもりです。
基礎編
モジュール編
UDP 編
C 言語編
TCP/IP エラー処理
Java 編
暗号化編
その他編
ソース一覧
以下のサンプルプログラムは、各項で解説したものをまとめたものです。
サンプルプログラムの動作チェックは、FreeBSD 5.2.1-RELEASE・perl-5.8.2・J2SE SDK 1.4.2_07 上で行い、
プロトコルのチェックは apache-2.0.52・qpopper-2.53・FreeBSD 標準の ftpd に対して行いました。
実行環境を持っていないので、Windows でのプログラムの動作確認は行っていません
ToDo
今後の予定。予定は未定。
- 数論・整数論
- 暗号いろいろ
- エラー処理。特に EINTR・EAGAIN などのシグナル。
- 暗号化機能付 IP Messenger を実装する
- LWP モジュールを使って HTTP クライアントを作ってみよう。
- HTTP/1.1 など
- UNIX ドメインソケット
- ping・traceroute を作成
- IPv6
- PHP
- ruby。特にマルチスレッドの実現が簡単みたい。
- こまごまと (処理別)
- 名前解決
- connect
- accept
- read
- write
- EPIPE
- 一度で write しきれない場合。戻り値チェック。select
- 戻り値 0 はありえない
- ブロックの可能性
- close
- shutdown
- こまごまと (ポイント別)
- EINTR
- システムコールを呼んでいるなら自分でリトライ。ライブラリにまかせるならそれでよし。
- ENOBUF
- RST 受信時は SIGPIPE と EPIPE が同時に発生
- ブロック
TOP >> ネットワークプログラミングの基礎知識
$Id: index.html,v 1.49 2017/03/20 16:06:06 68user Exp $