public void read(byte[] bytess)
{
int davar = this.clientSocket.Receive(bytess);
MemoryStream m = new MemoryStream(bytess);
BinaryFormatter b = new BinaryFormatter();
m.Position = 0;
SPacket information = b.Deserialize(m) as SPacket;
Image imageScreenShot = information.ScreenShot;
if (information.Premissionize)
Premitted = true;
if (information.Text != "")
{
cE.GetMessageFromServer(information.Text);
}
if (imageScreenShot == null)
return;
Bitmap screenShot = new Bitmap(imageScreenShot);
cE.UpdatePhoto(screenShot);
//screenShot.Dispose();
//Form1.t.Text = forText;
}
У меня есть эта функция чтения в клиенте, и когда я запускаю ее в режиме онлайн между 2-мя компьютерами, происходит исключение десериализации.Как обеспечить получение всего пакета
Я предполагаю, что что-то задерживает весь пакет и только часть его прибыли. Он сказал, что двоичный заголовок недействителен.
Как я могу убедиться, что на C# у меня есть весь пакет?
Кстати это TCP
Теоретически вы правы. Но на самом деле я выбрасываю исключение десериализации, если что-то интродуцирует синхронизацию сервера и клиента, как окно сообщения. и несколько это происходит, когда его между двумя компьютерами в LAN через несколько секунд –
, так что вопрос в том, как это предотвратить. –
Вы прочитали ответ? Получатель может вернуть вам небольшой объем данных. Затем сериализатор будет жаловаться, потому что он получил частичные данные. Этот код неверен, и это вызывает проблему. – usr