NetworkStream, CryptoStream. Проблема сериализации.
От: ID_soft  
Дата: 18.03.07 20:46
Оценка:
Доброго времени суток всем.
Столкнулся с проблемой сериализации через CryptoStream который в свою очеред прикреплен к NetworkStream.
Сериализация проходит нормально, а вот десериализация не проходит(т.е. блокирует процесс так, какбудто данных не приходило). Данные получаются только при закрытии CryptoStream.
Поиском наткнулся на FlushFinalBlock(), но это не помогло.
Подскажите как сделать чтобы данные нормально получались клиентом без закрытия потока? Или всетаки придется каждый раз закрывать поток а потом создавать его заново?
Отправляющий код:

crReadStream = new CryptoStream( clientNetStream, RM.CreateDecryptor( ), CryptoStreamMode.Read );
crWriteStream = new CryptoStream( clientNetStream, RM.CreateEncryptor( ), CryptoStreamMode.Write );

// отсылаем информацию о клиенте
try {
    bf.Serialize( crWriteStream, UserInfo );
    crWriteStream.FlushFinalBlock( );
}
catch ( Exception Ex ) {
    return -1;
}




Принимающий код:



try {
    robj = bf.Deserialize( crReadStream ); // <-- Здесь просто ничего не происходит пока не закроется поток на передающей стороне
    if ( robj.GetType() != typeof(UserInformation) ) {
        return -1;
    }
}
catch ( Exception Ex) {
    return -1;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.