ふらっとC#,C♯,C#(初心者用) Part30at TECH
ふらっとC#,C♯,C#(初心者用) Part30 - 暇つぶし2ch128:デフォルトの名無しさん
08/08/29 18:06:00
TcpClient の受信処理で1024Byteずつ受信してメモリストリームに書き出しています。
NetworkStreamのDataAvailableが続きのデータがあるにもかかわらず、
FALSEを返して受信が終了してしまいます。
下記サイトでも同じ問題が記載されています。
URLリンク(www.niseko.or.jp)

現在do~while間にSleep(50)を入れると正常に受信できるのですが、
他にも解決策はありませんか?

  //クライアントとの間の通信につかうストリームを取得
  NetworkStream ns = server2.GetStream(); //server2は、TcpClient

  //クライアントから送られたデータを受信する
  System.IO.MemoryStream ms = new System.IO.MemoryStream();
  byte[] resBytes = new byte[1024];
  int resSize;
  do
  {
    //データの一部を受信する
    resSize = ns.Read(resBytes, 0, resBytes.Length);
    //受信したデータを蓄積する
    ms.Write(resBytes, 0, resSize);
    Thread.Sleep(50); //ここで50ミリ秒スリープさせると正常に受信できる
  } while (ns.DataAvailable);
  string responsStrings = enc.GetString(ms.ToArray());


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch