谷口 義樹 -Yoshiki TANIGUCHI-
yoshiki@mikilab.doshisha.ac.jp
ソケット通信とは
ソケットとは,ネットワークを介して他のホストに接続する際に用いられる「接続の端点」である.
2つのプログラム間でデータのやりとりをするデータの入出力口として用いられる.
ソケットはその使い方にも特徴があり,ソケットを介してデータを送受信するときには,
ファイルの入出力と同じ要領で行うことができる.
つまり,送信したいデータをソケットに書き込むと通信相手のコンピュータのソケットに届く.
また,受信はソケットからデータを読み出せばよい.
つまり,ファイルの入出力とまったく同じ方法で,異なる2つの端末間でデータのやりとりができる方法が,ソケット通信である.
ソケット通信の仕組みを理解するために,TCPを用いた簡単なプログラミングを行った.
TCPによるデータ通信の手順は次のfig.1のようになる.

次に,マルチクライアントに対応するため,プログラムの改良を行った.
マルチクライアントを実現するための方法としては,forkを用いた.
forkとは,新しいプロセスを作成するUNIXのシステムコールである.
forkの呼び出しにより,forkを呼び出した時点の親プロセスと等価な子プロセスが作成される.
forkの呼び出しの返り値を調べることにより,親と子に異なるコード経路を指定することができる.
forkの呼び出しは,子には常に0を返し,親には子のPIDを返す.

<実行結果> :server side yoshiki@yoshiki:~$ ./server :client side yoshiki@cambria:~$ ./client 192.168.6.145 test TEST hello HELLO yoshiki@forte:~$ ./client 192.168.6.145 yes YES