2013-12-16 2 views
1

Вот кусок кода из моего приложения:XmlSerializer.Deserialize() из гнезда C#

using (NetworkStream ns = new NetworkStream(newClientSock)) 
{ 
    XmlSerializer xs = new XmlSerializer(typeof(RSAParameters)); 
    xs.Serialize(ns, _publicKey); 

    RSAParameters clientPubKey = (RSAParameters)xs.Deserialize(ns); 
} 

Что им пытаются сделать форму «Рукопожатие» между двумя клиентскими сокетами. Я не очень хорошо разбираюсь в сериализации, так что мой вопрос: будет ли объект XmlSerializer (xs) ждать чего-то, что будет отправлено, а затем desirialize, или данные, которые должны быть десриализованы, должны уже находиться в этом потоке?

Спасибо заранее,

ответ

0

XmlSerializer прочтет поток, как она поступает на ваш конец гнезда (т.е. будет ждать). Нет необходимости буферизировать его. Однако общей ошибкой является не очистка выходного потока на стороне отправителя (что делает десериализатор на другом конце ожидания навсегда). Вы должны убедиться, что вы сбросили его после вызова Serialize().

+0

Спасибо, что ответили так быстро, хотя я знал, что он должен ждать, я не мог найти ответа в Интернете! :) –

Смежные вопросы