подскажите как удобнее сохранить в лог NetSocketStream
От:
Аноним
Дата:
06.02.07 18:34
Оценка:
В NetSocketStream приходит XML запрос
как проще всего его сохранить в файл и далее на основе него создать XmlReader
пока получается следующее :
NetSocketStream stream = tcp_client.GetStream()
Byte[] m_buffer = new Byte[ BufferSize ];
m_stream.Read( m_buffer, 0, BufferSize );
FileStream fs = new FileStream( "request.xml", FileMode.Create );
fs.Write( m_buffer, 0, m_buffer.Length );
fs.Close();
MemoryStream ms = new MemoryStream( buffer, 0, BufferSize );
ms.Seek( 0, SeekOrigin.Begin );
XmlReader reader = new XmlTextReader( ms );
Но что то чувствую себя при этом полным индусом
И также еще вопрос сразу — как из потока в поток писать ? Очень удивился что не нашел в методах Write/Read возможности указать Stream а только byte[]. Буду вдвойне признателен если кто-нибудь разъяснит зачем сделали так ...
Re: подскажите как удобнее сохранить в лог NetSocketStream
Здравствуйте, Аноним, Вы писали:
А>В NetSocketStream приходит XML запрос А>как проще всего его сохранить в файл и далее на основе него создать XmlReader
А>пока получается следующее :
А>
А> NetSocketStream stream = tcp_client.GetStream()
А> Byte[] m_buffer = new Byte[ BufferSize ];
А> m_stream.Read( m_buffer, 0, BufferSize );
А> FileStream fs = new FileStream( "request.xml", FileMode.Create );
А> fs.Write( m_buffer, 0, m_buffer.Length );
А> fs.Close();
А> MemoryStream ms = new MemoryStream( buffer, 0, BufferSize );
А> ms.Seek( 0, SeekOrigin.Begin );
А> XmlReader reader = new XmlTextReader( ms );
А>
А>О классный вариант А>Вот следующий этап как теперь полученный XmlReader сохранить в файл и затем вернуть его в начальное состояние ?
А>если бы он был Stream, что-то в духе :
А>
Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1.
и еще нужно XmlReader откатить в первоначальное состояние ...
Документацией пользовался , только вот с ходу паттерны придумать не могу
Иногда встречаю интересные приемы, до которых бы сам наверное не догадался бы...
Я это подозревал, но ладно, думаю, пусть человек попробует. Это связано скорее всего с тем, что в данном случае невозможно определить конец XML документа, если читать из сетевого потока; buffer же имеет конецную длину.
Re[5]: подскажите как удобнее сохранить в лог NetSocketStrea
Здравствуйте, Аноним, Вы писали:
А>Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1. А>и еще нужно XmlReader откатить в первоначальное состояние ...
Ну тогда чем тебе не подходит твой вариант?
Re[6]: подскажите как удобнее сохранить в лог NetSocketStrea
От:
Аноним
Дата:
08.02.07 02:25
Оценка:
Здравствуйте, _d_m_, Вы писали:
___>Здравствуйте, Аноним, Вы писали:
А>>Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1. А>>и еще нужно XmlReader откатить в первоначальное состояние ...
___>Ну тогда чем тебе не подходит твой вариант?
Просто не нравится то что приходится много всего туда-сюда копировать. создавать буфер, потом из него memorystream...
Re[7]: подскажите как удобнее сохранить в лог NetSocketStrea
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, _d_m_, Вы писали:
___>>Здравствуйте, Аноним, Вы писали:
А>>>Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1. А>>>и еще нужно XmlReader откатить в первоначальное состояние ...
___>>Ну тогда чем тебе не подходит твой вариант?
А>Просто не нравится то что приходится много всего туда-сюда копировать. создавать буфер, потом из него memorystream...
В .NET есть строенные средства ведения лога сетевых операци, для этого в конфигурационном файле приложения необходимо добавить следующие строчки