projects:bbs_pm:manual:004
このページの2つのバージョン間の差分を表示します。
| projects:bbs_pm:manual:004 [2021/09/27 20:09] – created - external edit 127.0.0.1 | projects:bbs_pm:manual:004 [2024/12/23 18:19] (現在) – naoit0 | ||
|---|---|---|---|
| 行 25: | 行 25: | ||
| 受信処理の流れは下図の通りです。\\ | 受信処理の流れは下図の通りです。\\ | ||
| - | {{ 20210821-160047.png? | + | {{ : |
| BBS.pmはノードからの受信データを取得するとonRecvイベントを発生し、受信データを引数に設定してonRecvハンドラを呼び出します。\\ | BBS.pmはノードからの受信データを取得するとonRecvイベントを発生し、受信データを引数に設定してonRecvハンドラを呼び出します。\\ | ||
| 行 50: | 行 50: | ||
| 続きの分割データはonRecvハンドラを抜けるとBBS.pmが続きの分割データを取得することでonRecvイベントが発生し、呼び出されるonRecvハンドラから取得することができます。\\ | 続きの分割データはonRecvハンドラを抜けるとBBS.pmが続きの分割データを取得することでonRecvイベントが発生し、呼び出されるonRecvハンドラから取得することができます。\\ | ||
| - | {{ 20210827-223826.png? | + | {{ : |
| ここで注意すべきことは分割されたデータの分割点が文字コードの中間で分断していると文字データの断片は続きのデータを受け取って連結を行わないと文字データとして認識することができません。\\ | ここで注意すべきことは分割されたデータの分割点が文字コードの中間で分断していると文字データの断片は続きのデータを受け取って連結を行わないと文字データとして認識することができません。\\ | ||
| 行 56: | 行 56: | ||
| たとえばUTF-8の文字コードは日本語や記号などは1文字あたり3~4バイトで構成していますが、1文字あたりの文字コードの1バイト目と2バイト目の境目、または2バイト目と3バイト目の境目などでデータが分断されているとデータを受け取った時点では文字として識別できません。\\ | たとえばUTF-8の文字コードは日本語や記号などは1文字あたり3~4バイトで構成していますが、1文字あたりの文字コードの1バイト目と2バイト目の境目、または2バイト目と3バイト目の境目などでデータが分断されているとデータを受け取った時点では文字として識別できません。\\ | ||
| - | {{ 20210827-230343.png? | + | {{ : |
| 分断された断片データを文字として認識するためには、続きのデータを受け取って取得済みのデータと連結する必要がありますが、データの続きを取得するにはonRecvハンドラを抜け、次のonRecvハンドラが呼び出されないと取得できませんので、取得したデータをバッファリングしてonRecvハンドラを抜け、次のonRecvハンドラで続きの分割データを取得したときにバッファリングした分割データと結合します。\\ | 分断された断片データを文字として認識するためには、続きのデータを受け取って取得済みのデータと連結する必要がありますが、データの続きを取得するにはonRecvハンドラを抜け、次のonRecvハンドラが呼び出されないと取得できませんので、取得したデータをバッファリングしてonRecvハンドラを抜け、次のonRecvハンドラで続きの分割データを取得したときにバッファリングした分割データと結合します。\\ | ||
| - | {{ 20210827-225254.png? | + | {{ : |
| ここまでをまとめると次のようになります。\\ | ここまでをまとめると次のようになります。\\ | ||
| 行 117: | 行 117: | ||
| 受信処理の流れは下図の通りです。\\ | 受信処理の流れは下図の通りです。\\ | ||
| - | {{ 20210821-160113.png? | + | {{ : |
| データの送信を行うときは関数send()を呼び出しますが、この関数が呼び出されるとonSendイベントが発生し、送信データを引数に設定してonSendハンドラを呼び出します。\\ | データの送信を行うときは関数send()を呼び出しますが、この関数が呼び出されるとonSendイベントが発生し、送信データを引数に設定してonSendハンドラを呼び出します。\\ | ||
projects/bbs_pm/manual/004.1632740985.txt.gz · 最終更新: 2021/09/27 20:09 by 127.0.0.1