ネットワークプログラミング相談室 Port29at TECH
ネットワークプログラミング相談室 Port29 - 暇つぶし2ch746:デフォルトの名無しさん
14/06/07 16:35:42.74 ZfdboDuT
>>743
>サーバとクライアントでcloseするタイミングを同期する方法はありますでしょうか?

クライアントとサーバ上のアプリケーション間通信について、
以下のケースに応じて通信の終了に関する規約(プロトコル)を決める

(1) データ送信が必ず一方向のケース(例:パイプ)
 送信側は任意にcloseできるが、受信側ではソケットからの
 終了通知(データ長=0)を待ってからcloseしなければならない
(2) 要求/応答のペアからなるトランザクションが常に同一側で発生するケース(例:HTTP/FTP/SMTP)
 要求メッセージ送信側は任意にcloseできるが、応答メッセージ送信側では
 ソケットからの終了通知(データ長=0)を待ってからcloseしなければならない
(3) データ送信要求が任意の時点かつ双方の側で発生するケース
 制御メッセージとして通信終了要求(例:"QUIT")と通信終了応答(例:"OK")を定義し、
 正常に通信を終了させたい時は終了要求メッセージを送信し応答を待つ
 要求を受信した終了受け入れ側では応答メッセージを送信して即座にソケットをcloseする
 終了要求側では応答メッセージ受信を確認してからソケットをcloseする

(3)のケースは複雑な手順を踏まなければならないのだから、連動テストで問題が発生してから
解決策を悩むのではなく、上流の設計工程でアプリケーション間通信プロトコルの全体を
ステートマシンとして形式的に定義し、正当性を検証しておくことが望ましい


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch