Во-первых, я хотел бы определить проблему.
Я должен написать модуль связи между клиентом и сервером.
Что делает клиент?
- посылает Рапорт на сервер ---> sendReport (Raport Raport)
- получает specyfic Рапорт от сервера -> getReport() метод
- получает список Информация о доступных raports ----> getRaportsInfo()
Модуль сервера клиентов C#, сериализация Не работает
Клиент http://pastebin.com/344kfcbh
Что сервер сделать?
- получает запросы от клиента (на основе первого байта в потоке)
Class Server http://pastebin.com/wBwFPRpK
Сообщить Class
namespace OtherClasses
{
[Serializable]
public class Raport
{
public int day;
public int month;
public int year;
public Raport(int d, int m, int y)
{
day = d;
month = m;
year = y;
}
public void show()
{
Console.WriteLine("DAY=" + day + " MONTH=" + month + "YEAR=" + year);
}
}
}
где-то в питающей сети
Server s = new Server();
s.acceptConnection();
Client c = new Client();
Raport r1 = new Raport(1, 1, 1);
c.connect("127.0.0.1");
c.sendReport(r1);
Проблема: видимо, после прочтения первого байта из потока я не могу десериализовать.
Я получаю ошибку «Входной поток не является допустимым двоичным форматом.»
SerializationException
Как я могу десериализацию из моего потока после прочтения первого байта
Является ли этот класс Raport скопирована в обоих проектах? Или это в библиотеке (dll), на которую ссылаются оба проекта? –
Btw - использование BinaryWriter и необработанного потока запутывает, и я считаю здесь неправильным: вы делаете «пишите 3 на писателя», «сериализуете в поток», «флеш-писатель». Должно быть «писать 3 на писателя,« писатель-флеш »,« сериализовать на поток »или даже лучше:« писать 3 в поток, сериализовать в поток »(потерять писателя) –
Дополнительная информация: 3, которые вы пишете, не байт, но вы читали его так, как если бы это было. –