- 746 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 16:35:42.74 ID:ZfdboDuT]
- >>743
>サーバとクライアントでcloseするタイミングを同期する方法はありますでしょうか? クライアントとサーバ上のアプリケーション間通信について、 以下のケースに応じて通信の終了に関する規約(プロトコル)を決める (1) データ送信が必ず一方向のケース(例:パイプ) 送信側は任意にcloseできるが、受信側ではソケットからの 終了通知(データ長=0)を待ってからcloseしなければならない (2) 要求/応答のペアからなるトランザクションが常に同一側で発生するケース(例:HTTP/FTP/SMTP) 要求メッセージ送信側は任意にcloseできるが、応答メッセージ送信側では ソケットからの終了通知(データ長=0)を待ってからcloseしなければならない (3) データ送信要求が任意の時点かつ双方の側で発生するケース 制御メッセージとして通信終了要求(例:"QUIT")と通信終了応答(例:"OK")を定義し、 正常に通信を終了させたい時は終了要求メッセージを送信し応答を待つ 要求を受信した終了受け入れ側では応答メッセージを送信して即座にソケットをcloseする 終了要求側では応答メッセージ受信を確認してからソケットをcloseする (3)のケースは複雑な手順を踏まなければならないのだから、連動テストで問題が発生してから 解決策を悩むのではなく、上流の設計工程でアプリケーション間通信プロトコルの全体を ステートマシンとして形式的に定義し、正当性を検証しておくことが望ましい
|

|