サーバーRPG | クライアントRPG | |
1.SKOPENSKOPENプログラムによりソケットをオープンします。SKOPENでは、setsocketオプションで、 TCP_NODELAY,SO_REUSEADDRをセットしています。 |
1.SKOPENSKOPENプログラムによりソケットをオープンします。SKOPENでは、setsocketオプションで、 TCP_NODELAY,SO_REUSEADDRをセットしています。 |
|
2.SKBINDSKBINDプログラムによりソケットにIPアドレス/ポート番号を割り当てます。 SKBINDでは、明示的なIP割り当ての代わりにANYとしてどのインターフェースからの 接続要求についても受けとれります。 |
||
3.SKLISNSKLISNプログラムにより、クライアントからの接続要求を待ちます。 |
||
4.SKCONNSKCONNプログラムにより、サーバーに接続を行います。IPアドレスは、 構内ループバックアドレス(127.0.0.1)を指定しているので、サーバーと同じマシン上で クライアントも実行すると仮定しています。 |
||
5.SKACPTSKACPTプログラムにより、クライアントからの接続要求を受け入れます。この際に、新しいソケットディスクリプターがシステムにより与えられます。これ以降の通信は ここで割り当てられた新しいディスクリプターを使用します。 |
6.SKSPWNSKSPWNプログラムにより、子プロセスを起動し、パラメーターとしてプログラム名と 5.アクセプトで入手したソケットデイスクリプター渡します。SKLISNへ戻る |
|
子プロセスを起動する |
||
子プロセスRPG |
||
7.SKRECVSKRECVプログラムにより、クライアントから送信された文字列を受信し、画面表示します。 |
7.SKSENDSKSENDプログラムにより、画面から入力された文字列を送信します。 |
|
8.SKSENDSKSENDプログラムにより、7.でクライアントから受信した文字列をそのまま送信します。(エコー処理) |
8.SKRECVSKRECVプログラムにより、サーバーから送信された文字列を受信し、画面表示します。(エコー処理) |
|
9.SKCLOS文字列[EXIT]が送られてきた場合は、SKCLOSプログラムにより、ソケットのクローズを行います。 |
9.SKCLOS画面からF3が押されるか、サーバープログラムが終了した場合は、SKCLOSプログラムにより、ソケットのクローズを行います。 |