ネットワークプログラミング相談室 Port24
■ このスレッドは過去ログ倉庫に格納されています
0282デフォルトの名無しさん
2009/08/10(月) 00:57:42>多分1400バイトが安全圏かなぁ・・・。
>>278がレスしているように、TCPではメッセージ境界は保証されません。
いわゆるUNIXのパイプと同じ概念で、データの最小単位は1byteでしかないんです。
(だからTCPは「バイトストリーム指向」であると呼ばれることがあります。反意語は「レコード指向」)
言い換えると、理論的には最悪の場合1byte単位でソケットにデータが届くことがあり、
そのケースも想定して実装する必要があります。1400byteなんて安全圏はどこにも存在しません。
もし通信プロセスの実装が同期I/O方式であるなら、>>115の方法を使うのが最も楽です。
そうでないなら(非同期I/O方式であるなら)、推測されたように複雑なFIFO制御が求められます。
そんな設計が苦痛に感じられ、なおかつ(>>279が)アプリケーション層のプロトコル定義を
決定できる立場にあるのだとしたら、専用の通信ライブラリの利用を提案します。
(そのような通信ライブラリのことを「ミドルウェア」と呼ぶことがあります。)
(長いので続く)
■ このスレッドは過去ログ倉庫に格納されています