Получить базовое TCP-соединение из HttpWebRequest / Response - PullRequest
5 голосов
/ 03 января 2011

Я пытаюсь получить больше информации о том, что происходит, когда я подключаюсь к веб-сайту на более низком уровне, чем то, что мне дают HttpWebRequest и HttpWebResponse.Я использую C #.

Я хотел бы иметь возможность видеть информацию о поиске DNS и время, которое потребовалось для установления соединения (если новое соединение было установлено).HttpWebRequest и HttpWebResponse работают на более высоком уровне, чем этот, и я хочу спросить, есть ли способ получить базовый объект TcpClient (или любой другой объект низкого уровня, который они используют).

Если это невозможно, то есть ли способ получить и манипулировать списком соединений, которые поддерживает .net, не получая его через HttpWebRequest или HttpWebResponse?

Я не могу изменить приложение, над которым я работаю, на использование TcpClient, потому что для надежной реализации всех функций http потребуется слишком много времени.

Ответы [ 3 ]

4 голосов
/ 03 января 2011

Лучшее, что я могу вам получить, это создать файл app.config со следующей информацией:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.diagnostics>
        <trace autoflush="true" />
            <sources>
                <source name="System.Net" maxdatasize="1024">
                    <listeners>
                        <add name="MyTraceFile"/>
                    </listeners>
                </source>
              <source name="System.Net.Sockets" maxdatasize="1024">
                    <listeners>
                        <add name="MyTraceFile"/>
                    </listeners>
                </source>  
           </sources>


            <sharedListeners>
                <add
                  name="MyTraceFile"
                  type="System.Diagnostics.TextWriterTraceListener"
                  initializeData="System.Net.trace.log"
                />
            </sharedListeners>
            <switches>
                <add name="System.Net" value="Verbose" />
              <add name="System.Net.Sockets" value="Verbose" />
            </switches>
    </system.diagnostics>
</configuration>

Это включит трассировку и удалит файл журнала с именем «System.Net.trace»..log "в папке вашего приложения.Вы не получите всю информацию, которую ищете, и ее нелегко использовать во время работы приложения, но, по крайней мере, вам не нужно запускать стороннюю программу.Это не документировано слишком много, но есть некоторая информация , по крайней мере.

2 голосов
/ 03 января 2011

Используйте Wireshark, это лучший способ узнать все это.

1 голос
/ 03 января 2011

Если не Wireshark, тогда используйте Fiddler .

...