7.5.1 例: 単純な会話の終了

次の図は、正常に終了するAとB間の単純な会話を示しています。

図7-2 正常に終了する単純な会話


正常に終了する単純な会話の図

次の順序で処理が行われます。

  1. Aは、TPSENDONLYフラグでtpconnect()を呼び出して接続を設定します。このフラグは、Bが会話の受信側であることを示します。
  2. AはTPRECVONLYフラグでtpsend()を呼び出して、接続の制御をBに移します。その結果、TPEV_SENDONLYイベントが生成されます。
  3. Bが次にtprecv()を呼び出すと-1が返され、tperrno(5)TPEEVENTが設定されます。revent引数にTPEV_SENDONLYが返されて、制御がBに移ったことが示されます。
  4. Bは、rvalTPSUCCESSを設定してtpreturn()を呼び出します。この呼出しより、Aに対してTPEV_SVCSUCCイベントが生成され、接続が正常に切断されます。
  5. Aは、tprecv()を呼び出して、イベントが発生したことと会話が終了したことを認識します。イベントTPEV_SVCFAILが発生した場合でも、このtprecv()への呼出しでデータを受信できます。

ノート:

この例では、Aはクライアントまたはサーバーのどちらでもかまいませんが、Bはサーバーでなければなりません。