.NET的Network Tracing 机制

2024-01-21 13:48
文章标签 network 机制 net tracing

本文主要是介绍.NET的Network Tracing 机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

程序之间通信跟踪:

------------------------被测程序 Sample Start ----------------------------------------------------

 using System.Diagnostics;

using System.Net;
using System.Net.Sockets;

private void Sample()
        {
            UdpClient client = new UdpClient(10000);
            try
            {
                client.Connect("www.google.com", 10000);
                byte[] sendBytes = Encoding.ASCII.GetBytes("Hello?");
                client.Send(sendBytes, sendBytes.Length);

                client.Close();
            }
            catch (Exception e)
            {
                // Todo : Exeception handle
             }
        }

--------------------end-----------------------------------------------


Network Tracing 提供了访问托管程序产生的网络通信信息,以及网络方法的调用信息机制。要利用这种机制,需要添加如下的配置文件:

---------------------App.config-----------------------------------------

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.Net" tracemode="includehex" maxdatasize="1024">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <source name="System.Net.Sockets">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
      <source name="System.Net.Cache">
        <listeners>
          <add name="System.Net"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="System.Net" value="Verbose"/>
      <add name="System.Net.Sockets" value="Verbose"/>
      <add name="System.Net.Cache" value="Verbose"/>
    </switches>
    <sharedListeners>
      <add name="System.Net"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="network.log"
      />
    </sharedListeners>
    <trace autoflush="true"/>
  </system.diagnostics>
</configuration>

 

--------------------------end ------------------------------------------------

在主程序中调用Sample(),将会在当前目录下生成network.log的文件,

----------------------------network.log------------------------------------------

System.Net.Sockets Verbose: 0 : [5268] Socket#7746814::Socket(InterNetwork#2)
System.Net Information: 0 : [5268] Current OS installation type is 'Client'.
System.Net.Sockets Verbose: 0 : [5268] Exiting Socket#7746814::Socket()
System.Net.Sockets Verbose: 0 : [5268] Socket#7746814::Bind(0:10000#10000)
System.Net.Sockets Verbose: 0 : [5268] Exiting Socket#7746814::Bind()
System.Net.Sockets Verbose: 0 : [5268] DNS::GetHostAddresses(www.google.com)
System.Net.Sockets Verbose: 0 : [5268] DNS::GetHostByName(www.google.com)
System.Net.Sockets Verbose: 0 : [5268] Exiting DNS::GetHostByName()  -> IPHostEntry#63840421
System.Net.Sockets Verbose: 0 : [5268] Exiting DNS::GetHostAddresses()  -> IPAddress[]#54246671
System.Net.Sockets Verbose: 0 : [5268] Socket#7746814::Connect(147:10000#-1813941567)
System.Net.Sockets Information: 0 : [5268] Socket#7746814 - Created connection from 207.46.92.16:37891 to 209.85.225.147:10000.
System.Net.Sockets Verbose: 0 : [5268] Exiting Socket#7746814::Connect()
System.Net.Sockets Verbose: 0 : [5268] Socket#7746814::Send()
System.Net.Sockets Verbose: 0 : [5268] Data from Socket#7746814::Send
System.Net.Sockets Verbose: 0 : [5268] 00000000 : 48 65 6C 6C 6F 3F                               : Hello?
System.Net.Sockets Verbose: 0 : [5268] Exiting Socket#7746814::Send()  -> 6#6
System.Net.Sockets Verbose: 0 : [5268] Socket#7746814::Close()
System.Net.Sockets Verbose: 0 : [5268] Socket#7746814::Dispose()
System.Net.Sockets Verbose: 0 : [5268] Exiting Socket#7746814::Close()


---------------------------end--------------------------------------------

通过log,可以清楚的看到网络程序调用的方法,发送呵接受的数据,这些都是问题诊断所需要的重要信息。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/grtmn/archive/2010/04/25/5526482.aspx

这篇关于.NET的Network Tracing 机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629741

相关文章

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理