タイトル | : GetDataとPeekData |
記事No | : 11890 |
投稿日 | : 2008/03/26(Wed) 11:32 |
投稿者 | : コーヒーブレイク |
いつも大変お世話になっています。
現在VB6_SP6にてサーバークライアントのアプリケーションを作成して いるのですが、以下のことで悩んでいます。
<1>現在ソケット通信の受信処理は以下の手順で行っています。 ・DataArrivalイベント内にてPublic変数に追加(データは全てString型です) ・Connect状態の時のみ起動させてあるタイマーイベント内にて上記 Public変数から順次受信処理を行う。
<2>上記の処理を以下のように変更しようと考えています。 ・DataArrivalイベント内にてPeekDataを利用し1受信分受信が完了したことを 確認し、その分だけGetDataにて取得し受信処理を行う。 1受信処理を行ったらDataArrivalイベントを抜ける。
ここでヘルプの「GetData メソッド (WinSock コントロール)」を参照したところ 解説の欄に、 「通常は、DataArrival イベント内で、その引数 bytesTotal を指定して GetData メソッドを呼び出します。引数 maxlen に bytesTotal より小さい値を 指定すると、残りのデータが失われることを知らせる 10040 番の警告が発生します。」 と記載されています。
ということは<2>の処理に変更すると取りこぼしが発生してしまうのでしょうか? 勘違いしている、あるいは前提条件がある、またはもっといい作り方がある等 アドバイスいただけると助かります。 よろしくお願いいたします。
|