网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
用c#监控网络流量
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式

 以下的代码的原作是opensource的一个叫sniffer.net的,用vb.net写的,这里只是简单的用c#翻译了一下,暂时还只能监控所有数据包,不能监控某一个进程的数据包,代码如下:
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;

namespace UpdateTester
{
/**//// <summary>
/// Monitor 的摘要说明。
/// </summary>
public class Monitor
{
   public delegate void NewPacketEventHandler(Monitor m, Packet p);
   public event NewPacketEventHandler NewPacket;
   private Socket m_Monitor;
   private IPAddress m_Ip;
   private byte m_Buffer = new byte[65535];
   private const System.Int32 IOC_VENDOR = 0x18000000;
   private const int IOC_IN = -2147483648;
   private const int SIO_RCVALL = IOC_IN ^ IOC_VENDOR ^ 1;
   private const int SECURITY_BUILTIN_DOMAIN_RID = 0x20;
   private const int DOMAIN_ALIAS_RID_ADMINS = 0x220;

   public System.Net.IPAddress IP
   {
    get { return m_Ip; }
   }

   public byte Buffer
   {
    get { return m_Buffer; }
   }

   public Monitor()
   {
    //
    // TODO: 在此处添加构造函数逻辑
    //
   }

   public Monitor(IPAddress IpAddress)
   {
    if (!(Environment.OSVersion.Platform == PlatformID.Win32NT) && Environment.OSVersion.Version.Major<5)
    {
     throw new NotSupportedException("This program requires Windows 2000, Windows XP or Windows .NET Server!");
    }
    m_Ip = IpAddress;
   }

   public void Start()
   {
    if (m_Monitor==null)
    {
     try
     {
      m_Monitor = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
      m_Monitor.Bind(new IPEndPoint(IP, 0));
      m_Monitor.IOControl(SIO_RCVALL, BitConverter.GetBytes(1), null);
      m_Monitor.BeginReceive(m_Buffer, 0, m_Buffer.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);
     }
     catch (Exception e)
     {
      m_Monitor = null;
      throw new SocketException();
     }
    }
   }

   public void Stop()
   {
    if (m_Monitor!=null)
    {
     m_Monitor.Close();
    }
    m_Monitor = null;
   }

   public void OnReceive(System.IAsyncResult ar)
   {
    try
    {


   int received = m_Monitor.EndReceive(ar);

     try
&

  • 上一篇资讯: C#中使用MAPI发送E-Mail
  • 下一篇资讯: C#中TreeView组件使用
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号