NetworkStream 経由でファイルを送信し、クライアント側で再構築しようとしています。データを正しく取得できます (私は思います) が、BinaryWriter または FileStream オブジェクトのいずれかを使用してファイルを再作成すると、使用する方法論に関係なく、最初は同じ時点でファイルが途切れます。
private void ReadandSaveFileFromServer(ref TcpClient clientATF,ref NetworkStream currentStream, string locationToSave)
{
int fileSize = 0;
string fileName = "";
fileName = ReadStringFromServer(ref clientATF,ref currentStream);
fileSize = ReadIntFromServer(ref clientATF,ref currentStream);
byte[] fileSent = new byte[fileSize];
if (currentStream.CanRead && clientATF.Connected)
{
currentStream.Read(fileSent, 0, fileSent.Length);
WriteToConsole("Log Recieved");
}
else
{
WriteToConsole("Log Transfer Failed");
}
FileStream fileToCreate = new FileStream(locationToSave + "\\" + fileName, FileMode.Create);
fileToCreate.Seek(0, SeekOrigin.Begin);
fileToCreate.Write(fileSent, 0, fileSent.Length);
fileToCreate.Close();
//binWriter = new BinaryWriter(File.Open(locationToSave + "\\" + fileName, FileMode.Create));
//binWriter.Write(fileSent);
//binWriter.Close();
}
ステップスルーしてfileNameとfileSizeを確認すると、それらは正しいです。byte[] も完全に設定されています。次に何ができるか、何か手がかりはありますか?
前もって感謝します...
ショーン
編集!!!:
だから私は何が起こっているのかを理解しました。文字列を読み取ってからストリームから Int を読み取ると、バイト配列は 256 インデックスの長さになります。したがって、文字列の読み取りは int を取り入れているため、他の領域が破壊されます。これを理解する必要があります...