DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SocketFlagsの使用方法について

環境/言語:[C#、WindowsXP、.NET Framework2.0]
分類:[.NET]

お世話になっております。

Socket通信でデータのやり取りを行うアプリケーションを作成しています。

現在、大きいbyte数のデータを受信するとデータの途中までしか受信しない
という現象があり困っております。
下記のように受信しています。
「SocketFlags.None」は指定byte数を受信すると思っているのですが間違っ
ているのでしょうか?
(数千byteのものであれば問題ないのですが、数万byteになるとデータを
一部受信しません)

------------------------------
    //recvSize    :受信したサイズ
    //state.buffer:受信データを一時おいておく変数
    //dataSize    :ヘッダーに記述してあるサイズ

    recvSize = Sock.Receive(state.buffer, dataSize, SocketFlags.None);
    // recvSizeとdataSizeが異なります。ここでdataSize分まで
    // 受信したいです。

----------------------------

アドバイス等、ご教授お願いします。
足りない場合は続けて Receive すればいいんじゃないですかね。
返信ありがとうございます。

以下のようにしてループで回すことで解決できました。
ありがとうございました。

----------------------------------
    while (recvSize != dataSize)
    {
        recvSize += Sock.Receive(state.buffer, dataSize-recvSize, SocketFlags.None);
        if (roopCnt++ > 3)
        {
            break;
        }
    }
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板