Re[7]: подскажите как удобнее сохранить в лог NetSocketStrea
От: raptor_xplat Россия  
Дата: 08.02.07 03:49
Оценка: 1 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, _d_m_, Вы писали:


___>>Здравствуйте, Аноним, Вы писали:


А>>>Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1.

А>>>и еще нужно XmlReader откатить в первоначальное состояние ...

___>>Ну тогда чем тебе не подходит твой вариант?


А>Просто не нравится то что приходится много всего туда-сюда копировать. создавать буфер, потом из него memorystream...


В .NET есть строенные средства ведения лога сетевых операци, для этого в конфигурационном файле приложения необходимо добавить следующие строчки


  <system.diagnostics>
    <sources>
      <source name="System.Net.Sockets">
        <listeners>
          <add name="Sockets"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="System.Net.Sockets" value="31" />
    </switches>
    <sharedListeners>
      <add name="Sockets" type="System.Diagnostics.TextWriterTraceListener" initializeData="Sockets.log"/>
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>



И тогда в файле sockets.log — у вас будет сохраняться полный поток данных, который был передан вашим приложеним по сокету(-ам).
Re[3]: подскажите как удобнее сохранить в лог NetSocketStrea
От: _d_m_  
Дата: 07.02.07 05:32
Оценка: +1
Здравствуйте, Аноним, Вы писали:

___>>А так не пробовал?

___>>
___>>XmlReader reader = XmlReader.Create(tcp_client.GetStream());
___>>

А>О классный вариант
А>Вот следующий этап как теперь полученный XmlReader сохранить в файл и затем вернуть его в начальное состояние ?

А>если бы он был Stream, что-то в духе :


А>
А>reader->Save( "request.xml" );
А>reader->Seek( 0, Offset.Start );
А>


Стесняюсь спросить... А документацией пробовал пользоваться?
XmlReader reader = XmlReader.Create(tcp_client.GetStream());
XmlDocument doc = new XmlDocument();
doc.Load(reader);
doc.Save("request.xml");
подскажите как удобнее сохранить в лог 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
От: _d_m_  
Дата: 06.02.07 21:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В 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 reader = XmlReader.Create(tcp_client.GetStream());


А>Но что то чувствую себя при этом полным индусом


В Индии сейчас, программирование одна из самых развитых отраслей
Re[2]: подскажите как удобнее сохранить в лог NetSocketStrea
От: Аноним  
Дата: 07.02.07 05:13
Оценка:
___>А так не пробовал?
___>
___>XmlReader reader = XmlReader.Create(tcp_client.GetStream());
___>

О классный вариант
Вот следующий этап как теперь полученный XmlReader сохранить в файл и затем вернуть его в начальное состояние ?

если бы он был Stream, что-то в духе :

reader->Save( "request.xml" );
reader->Seek( 0, Offset.Start );
Re[4]: подскажите как удобнее сохранить в лог NetSocketStrea
От: Аноним  
Дата: 07.02.07 16:42
Оценка:
__>Стесняюсь спросить... А документацией пробовал пользоваться?
___>
___>XmlReader reader = XmlReader.Create(tcp_client.GetStream());
___>XmlDocument doc = new XmlDocument();
___>doc.Load(reader);
___>doc.Save("request.xml");
___>


Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1.
и еще нужно XmlReader откатить в первоначальное состояние ...

Документацией пользовался , только вот с ходу паттерны придумать не могу
Иногда встречаю интересные приемы, до которых бы сам наверное не догадался бы...


Кстати этот вариант
XmlReader reader = XmlReader.Create(tcp_client.GetStream());

у меня почему-то виснет и работает только в случае
buffer = new Byte[buffersize];
tcp_client.GetStream().Read( buffer, 0, buffersize );
XmlReader reader = XmlReader.Create( buffer );

с чем это связано понять не могу
Re[5]: подскажите как удобнее сохранить в лог NetSocketStrea
От: _d_m_  
Дата: 07.02.07 20:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Кстати этот вариант

А>
А>XmlReader reader = XmlReader.Create(tcp_client.GetStream());
А>

А>у меня почему-то виснет и работает только в случае
А>
А>buffer = new Byte[buffersize];
А>tcp_client.GetStream().Read( buffer, 0, buffersize );
А>XmlReader reader = XmlReader.Create( buffer );
А>

А>с чем это связано понять не могу

Я это подозревал, но ладно, думаю, пусть человек попробует. Это связано скорее всего с тем, что в данном случае невозможно определить конец XML документа, если читать из сетевого потока; buffer же имеет конецную длину.
Re[5]: подскажите как удобнее сохранить в лог NetSocketStrea
От: _d_m_  
Дата: 07.02.07 20:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1.

А>и еще нужно XmlReader откатить в первоначальное состояние ...

Ну тогда чем тебе не подходит твой вариант?
Re[6]: подскажите как удобнее сохранить в лог NetSocketStrea
От: Аноним  
Дата: 08.02.07 02:25
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Здравствуйте, Аноним, Вы писали:


А>>Вариант, строк мало, но чем он мне не нравится — так это то что doc не загрузится если XML битый, хотелось бы то что получили то и сохранили 1 в 1.

А>>и еще нужно XmlReader откатить в первоначальное состояние ...

___>Ну тогда чем тебе не подходит твой вариант?


Просто не нравится то что приходится много всего туда-сюда копировать. создавать буфер, потом из него memorystream...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.