ネットワークプログラミングの基礎知識
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 $