SKKServプロトコル

エンコーディング

プロトコルの文字エンコーディングはEUC-JP

処理シーケンス

プロトコルはクライアントからの要求にサーバーが処理結果を返却するようになっている。
例外として、接続要求が受け付けられない状態の場合に、クライアントが接続した時点でサーバーから<error status>が送られる。

  • クライアントの要求
    • "0" サーバーから切断される
    • "1midashi " サーバーから変換結果を得る
    • "2" サーバーのバージョンを得る
    • "3" サーバーのホスト名とアドレスを得る
    • "4midashi " サーバーから補完された見出し候補一覧を得る
  • サーバーの応答
    • クライアントから"0" 何も応答せずに接続を切断する
    • クライアントから"1"
      • エラーの場合 "0"
      • 候補がある場合 "1/cand1/cond2/.../candN/\n"
      • 候補がない場合 "4\n" または "4/midashi/\n"
    • クライアントから"2" "Software Name.Major.Minor "
    • クライアントから"3" "Hostname:address1:address2:...:addressN: "
    • クライアントから"4"
      • 候補がある場合 "1 cand1 cond2 ... candN \n"
      • 候補がない場合 "4\n" または "4 midashi \n"

BNF(のつもり)

ベース

<LF> ::= #x0a
<CR> ::= #x0d
<CRLF> ::= <CR><LF>
<EOL> ::= <LF> | <CR> | <CRLF> | ""
<number> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<letter> ::= ; EUC-JPで既定される文字全て
<word> ::= <letter> { <letter> }
<whitespace> ::= " "
<separator> ::= " " | "/"
<candidates> ::= { <separator> <word> } <separator>

クライアント要求

クライアントからの切断要求
<disconnect request> ::= "0"
クライアントからの変換要求
<convert request> ::= "1"
クライアントからの版数要求
<version request> ::= "2"
クライアントからのサーバー名要求
<name request> ::= "3"
クライアントからの補完要求
<completion request> ::= "4"
<request code> ::= <disconnect request> | <convert request> | <version request> | <name request> | <completion request>
<client end> ::= <disconnect request>
<client request> ::= <convert request> <word> <whitespace>
<client version> ::= <version request>
<client host> ::= <name request>
<client server completion> ::= <completion request> <word> <whitespace>
クライアントからの要求形式
<client requests> ::= <client end> | <client request> |
<client version> | <client name> | <client server completion>

サーバー返却

サーバーが障害状態
<error status> ::= "0"
候補が発見できた状態
<candidate found status> ::= "1"
候補が発見できなかった状態
<candidate not found status> ::= "4"
接続を受け付けられない状態
<service not available status> ::= "9"
<status code> ::= <error status> | <candidate found status> | <candidate not found status> | <service not available status>
<version form> ::= <word> "." { <number> } + "." { <number> } +
<address form> ::= <hostname> ":" { <address> ":" } +

サーバーからの返却形式
<server reply> ::= ( <status code> <candidates> <LF> ) ; <client request> または <client server completion> への応答

| ( <version form> <whitespace> ) ; <client version> への応答
| ( <address form> <whitespace> ) ; <client name>への応答