DataAvailableがfalseの場合、すべてのデータがNetworkStreamから読み取られることを確認しますか?
または、データの送信者は最初にデータの長さを送信する必要がありますか。そして、送信者が指定したバイト数を読み取るまで読み取る必要がありますか?
サンペル:
private Byte[] ReadStream(NetworkStream ns)
{
var bl = new List<Byte>();
var receivedBytes = new Byte[128];
while (ns.DataAvailable)
{
var bytesRead = ns.Read(receivedBytes, 0, receivedBytes.Length);
if (bytesRead == receivedBytes.Length)
bl.AddRange(receivedBytes);
else
bl.AddRange(receivedBytes.Take(bytesRead));
}
return bl.ToArray();
}