前提・実現したいこと
Tcp/ipを使用したデータの送受信
発生している問題・エラーメッセージ
受信部分を
c#
1while(true) 2{ 3//処理 4}
のようにして無限ループで待機しNetWorkStream.Read()
の戻り値が0のときにループを抜けるような実装なのですが、1度目のRead()
は正常に取得できているようなのですが2回目Read()
の際に呼び出し後にアプリケーションが落ちてしまいます。
該当のソースコード
C#
1privata TcpClient client; 2public byte[] Exec(byte[] data) 3{ 4 NetworkStream stream = null; 5 try 6 { 7 lock (client) 8 { 9 if (client.Connected == false) 10 client.Connect(Host, Port); 11 12 stream = client.GetStream(); 13 stream.Write(data, 0, data.Length); 14 stream.Flush(); 15 } 16 } 17 catch(Exception e) 18 { 19 throw new Exception(); 20 } 21 using (var mStream = new MemoryStream()) 22 { 23 // NetworkStreamからmemoryに展開 24 var buff = new byte[512]; 25 try 26 { 27 while (true) 28 { 29 // 2回目おちる 30 int size = stream.Read(buff, 0, buff.Length); 31 if (size == 0) 32 break; 33 mStream.Write(buff, 0, size); 34 } 35 } 36 catch (Exception e) 37 { 38 Console.WriteLine(e.Message); 39 } 40 return mStream.ToArray(); 41 } 42 43
試したこと
trycatchをしてみたのですが止まらずアプリケーションが落ちてしまいます。