Deserialization Problem [требует правки]

384
08 января 2017, 16:04

Подскажите у меня exception(End of Stream encountered before parsing was completed) при десериализации объекта в клиент-серверном приложении на сервере. Клиент:

     private void Send(Socket client)
    {
        byte[] buffer;
        fileDetails = new FileDetails();
        using (_memoryStream = new MemoryStream())
        {
            using (Stream fs = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read, FileShare.None))
            {
                fs.Read(fileDetails.buffer, 0, fileDetails.buffer.Length);
                // считывается имя с TextBoxa
                string[] temp = textBox1.Text.Split('\\');
                string[] temp2 = temp[temp.Length - 1].Split('.');
                fileDetails.fileName = temp2[0];
                fileDetails.fileType = temp2[1];
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(_memoryStream, fileDetails);

            }
        }
        buffer = _memoryStream.ToArray();
        client.BeginSend(buffer, 0, buffer.Length, 0,
            new AsyncCallback(SendCallback), client);

    }
    private void SendCallback(IAsyncResult ar)
    {
        try
        {
            // Retrieve the socket from the state object.
            Socket handler = (Socket)ar.AsyncState;
            // Complete sending the data to the remote device.
            handler.EndSend(ar);
            sendDone.Set();
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
        }
    }

Сервер:

     private static void AcceptCallback(IAsyncResult ar)
{
    // Signal the main thread to continue.
    allDone.Set();
    // Get the socket that handles the client request.
    listener = (Socket) ar.AsyncState;
    handler = listener.EndAccept(ar);
    // Create the state object.
    buffer = new byte[1024];
    handler.BeginReceive(buffer, 0, buffer.Length, 0,
        new AsyncCallback(ReadCallback), listener);
}
private static void ReadCallback(IAsyncResult ar)
{
    // Signal the main thread to continue.
    allDone.Set();
    listener = (Socket) ar.AsyncState;
    fileDet = new FileDetails();
    int bytesRead = handler.EndReceive(ar);
    if (bytesRead == 0)
    {
        return;
    }
    if (bytesRead > 0)
    {
        using (_memoryStream = new MemoryStream(buffer))
        {
            _memoryStream.Seek(0, 0); // не помогает 
            //_memoryStream.Flush тоже
            BinaryFormatter fileFormatter = new BinaryFormatter();
            fileDet = (FileDetails) fileFormatter.Deserialize(_memoryStream);
            string fileName = fileDet.fileName + "." + fileDet.fileType;
            using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Read, FileShare.Read))
            {
                fs.Write(fileDet.buffer, 0, fileDet.buffer.Length);
            }
        }
    }
    else
    {
        // Not all data received. Get more.
        handler.BeginReceive(buffer, 0, buffer.Length, 0,
            new AsyncCallback(ReadCallback), listener);
    }
}

Объект который хочу десериализовать(находиться в отдельной сборке):

    [Serializable]
  public class FileDetails
 {
private string _fileName;
private string _fileType;
public string fileName
{
    get { return _fileName; }
    set { _fileName = value; }
}

public string fileType
{
    get { return _fileType; }
    set { _fileType = value; }
}

public byte[] buffer = new byte[1024];
READ ALSO
C#.Заполнение DatagrirView

C#.Заполнение DatagrirView

Всем приветНа данный момент заполняю грид методом Add()

355
ASP.NET Identity Session timeout продлить сессию

ASP.NET Identity Session timeout продлить сессию

Всем приветСтолкнулся с такой вот проблемой: Необходимо продлить сессию пользователя до максимально возможной

452
Xamarin Удалить маркер в google maps

Xamarin Удалить маркер в google maps

Пытаюсь показать месторасположение в реальном времени на карте, получаю координаты и вызываю функцию для добавления маркера на карту :

514
Как скопировать (спарсить) DOM страницы? [требует правки]

Как скопировать (спарсить) DOM страницы? [требует правки]

ИСПОЛЬЗУЕТСЯ: WebDriver, С#, Google chrome СЦЕНАРИЙ - парсим DOM - проверяем содержит ли DOM, искомый домен

342