TCPサーバーデーモン概要フロー


サーバーRPG クライアントRPG

1.SKOPEN

SKOPENプログラムによりソケットをオープンします。SKOPENでは、setsocketオプションで、 TCP_NODELAY,SO_REUSEADDRをセットしています。

1.SKOPEN

SKOPENプログラムによりソケットをオープンします。SKOPENでは、setsocketオプションで、 TCP_NODELAY,SO_REUSEADDRをセットしています。

2.SKBIND

SKBINDプログラムによりソケットにIPアドレス/ポート番号を割り当てます。 SKBINDでは、明示的なIP割り当ての代わりにANYとしてどのインターフェースからの 接続要求についても受けとれります。

3.SKLISN

SKLISNプログラムにより、クライアントからの接続要求を待ちます。
<=====

4.SKCONN

SKCONNプログラムにより、サーバーに接続を行います。IPアドレスは、 構内ループバックアドレス(127.0.0.1)を指定しているので、サーバーと同じマシン上で クライアントも実行すると仮定しています。

5.SKACPT

SKACPTプログラムにより、クライアントからの接続要求を受け入れます。
この際に、新しいソケットディスクリプターがシステムにより与えられます。これ以降の通信は ここで割り当てられた新しいディスクリプターを使用します。


<=====

6.SKSPWN

SKSPWNプログラムにより、子プロセスを起動し、パラメーターとしてプログラム名と 5.アクセプトで入手したソケットデイスクリプター渡します。
SKLISNへ戻る

子プロセスを起動する

子プロセスRPG

7.SKRECV

SKRECVプログラムにより、クライアントから送信された文字列を受信し、画面表示します。
<=====

7.SKSEND

SKSENDプログラムにより、画面から入力された文字列を送信します。


8.SKSEND

SKSENDプログラムにより、7.でクライアントから受信した文字列をそのまま送信します。
(エコー処理)


<=====

8.SKRECV

SKRECVプログラムにより、サーバーから送信された文字列を受信し、画面表示します。
(エコー処理)

9.SKCLOS

文字列[EXIT]が送られてきた場合は、SKCLOSプログラムにより、ソケットのクローズを行います。

9.SKCLOS

画面からF3が押されるか、サーバープログラムが終了した場合は、SKCLOSプログラムにより、ソケットのクローズを行います。

[Return]