У меня проблемы с отправкой следующего файла изображения размером 140 КБ по сети с использованием сокетов:
Начало файла передается правильно, затем все остальное путаетсяприводя к следующему результату:
У меня есть сервер, который ждет файлов, и клиент, который подключается к серверу и запускает передачу файлов.Когда клиент закрывает соединение, сервер знает, что файл был отправлен, и сохраняет его.
Все данные на стороне сервера собираются в байтовом списке (GLOBAL.FILE_BUFFER) перед записью в файл:
public void OnDataReceived(IAsyncResult asyn)
{
try
{
SocketPacket socketData = (SocketPacket)asyn.AsyncState;
int iRx = socketData.m_currentSocket.EndReceive(asyn);
for (int f = 0; f < iRx; f++)
{
GLOBAL.FILE_BUFFER.Add(socketData.dataBuffer[f]); // Collect all the incoming data into a buffer
}
WaitForData(socketData.m_currentSocket, socketData.socket_id, REQUEST_INDEX_ID);
}
catch (ObjectDisposedException)
{
}
catch (SocketException se)
{
}
}
Это код, который я использую для записив файл:
public static void ByteArrayToFile(string _FileName, byte[] _ByteArray, int BytesRead)
{
System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
_FileStream.Write(_ByteArray, 0, BytesRead);
_FileStream.Close();
}
Я использовал ту же функцию ByteArrayToFile на стороне cient, и он сохранил изображение правильно.Похоже, что клиент отправляет правильные данные, но когда сервер получает их, они портятся.Я сохранил файл на обоих концах, по клиенту и по серверу, а затем сравнил их:
Обратите внимание на фиолетовую линию / полосу внизу в центре.Это указывает на то, что данные там не совпадают, но обратите внимание, что они идеально совпадают в началепока нечего читать !?Если у вас нет решения, можете ли вы дать мне какие-нибудь советы, пожалуйста ?!Эта проблема беспокоила меня в течение нескольких недель, я бы хотел, чтобы ее окончательно выяснили.Спасибо!