風で飛んでいくチラ裏

気ままに雑記メモ書き殴り。古い記事は別blogからの引っ越しなのでレイアウトがアレです。

オレオレ通信仕様

詐欺ではなく、独自プロトコルの通信仕様を考えてみましょう。的な。 かなり適当にメモ。

RFC等を漁って適当なネットワークプロトコルを1つか2つ選んで勉強したほうがよっぽどいいですね。

 

・リクエスト-レスポンス方式?垂れ流し?(TCPUDPかみたいな)

・パケットやコマンドみたいな構造単位は作るよね

 - 大量データ送信用ならパケットの中にさらにヘッダとボディみたいな区別かな

・データストリームのどこからがパケットの先頭(終端)なのか判別をつける

 - 開始文字、終端文字(プリアンブル・ポストアンブル)を作る

 - 終端文字の次は次のコマンドの先頭(ノイズに弱い)

 - タイミングを合わせる、もしくは同期通信

・通信中のデータ化けやデータ落ちを考慮する

 - チェックサムパリティを使う

・可視化する

 - テキストベースにするとデバッグや確認が楽チン?

 - 通信内容が他の人に見られて困るものならNG

・最重要なものから前に並べる

 - 前から順に確認していって、失敗したらそこで読むのをやめればいいようにする

・パースしやすくする

 - データはできるだけID化、固定長化する

 - 可変長にするときは データ長->データ という構造が一般的

タイムアウトを決める

 - 応答が必要ならどのくらいで【返さなければいけないか/待たなければいけないか】決める

・既存の通信フォーマットをインスパイヤする

 - まるっきり同じだと色々まずいので、仕組みとそれで便利、楽になることを見つける

広告を非表示にする
(function(document){ var pres = document.getElementsByTagName("pre") for(var i=pres.length; i--; ){  var el = makeOl(pres[i]) pres[i].appendChild(el) } function makeOl(pre){ var ol = document.createElement("ol") , li = document.createElement("li") , df = document.createDocumentFragment() , br = pre.innerHTML.match(/\n/g) ol.className = "preLine" ol.setAttribute("role", "presentation") for(var i=br.length; i--; ){ var li2 = li.cloneNode(true) df.appendChild(li2) } ol.appendChild(df) return ol } })(document)