重複の可能性:
TcpClient がデータを送信し、ネットワークを介してデータを受信する
TcpClient 応答が完全に読み取られるまでループする
TCP 経由でサーバーからクライアントにファイルを送信しようとしています。
サーバー側コード、送信ファイル:
NetworkStream netStream = client.GetStream();
FileStream fs = new FileStream("usb.exe",FileMode.Open, FileAccess.Read);
byte[] data = new byte[fs.Length];
fs.Read(data,0, data.Length);
fs.Flush();
fs.Close();
netStream.Write(data, 0, data.Length);
netStream.Flush();
クライアント側コード、受信ファイル:
FileStream str = new FileStream("usb.exe", FileMode.Create, FileAccess.Write);
byte[] data = new byte[1024];
while ((dataCitit = netStream.Read(data,0, data.Length)) > 0)
{
Thread.Sleep(25);
Application.DoEvents();
str.Write(data, 0, dataCitit);
totalbytes += dataCitit;
}
str.Close();
誰かが私が間違っているところを指摘できますか?
ファイルには 1036 kb があり、1032 kb のみを送信してスタックし、クライアント側の while ループから抜け出せません。
また、サーバーを閉じてすぐに開くと、最後のバイトが送信され、ファイルが完全に送信されます。(このファイルは完全に開きます)
すべてのバイトを送信しないのはサーバー側の問題だと思いますが、なぜ、どこで...