Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
ネットワークプログラミングの基礎知識
ネットワークプログラミングの基礎知識
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 $