• λ我爱Aspx >> Asp.Net >> 用C#的Raw Socket实现网络封包监视
  • 用C#的Raw Socket实现网络封包监视

  • :未知  Դ:internet  :2007-5-20 16:43:42  ؼ:c#
  • 这里的SIO_RCVALL是指示RawSocket接收所有的数据包,在以后的IOContrl函数中要用,在下面的构造函数中,实现了对一些变量参数的初始化:

    public RawSocket() //构造函数

    {

    error_occurred=false;

    len_receive_buf = 4096;

    receive_buf_bytes = new byte[len_receive_buf];

    }

    下面的函数实现了创建RawSocket,并把它与终结点(IPEndPoint:本机IP和端口)绑定:

    public void CreateAndBindSocket(string IP) //建立并绑定套接字

    {

    socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

    socket.Blocking = false; //置socket非阻塞状态

    socket.Bind(new IPEndPoint(IPAddress.Parse(IP), 0)); //绑定套接字

    if (SetSocketOption()==false) error_occurred=true;

    }

    其中,在创建套接字的一句socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);中有3个参数:

    第一个参数是设定地址族,MSDN上的描述是“指定 Socket 实例用来解析地址的寻址方案”,当要把套接字绑定到终结点(IPEndPoint)时,需要使用InterNetwork成员,即采用IP版本4的地址格式,这也是当今大多数套接字编程所采用一个寻址方案(AddressFamily)。

    Ҷƪл˵?
  • һƪc# 获得局域网主机列表实例
    һƪ利用C#实现标准的 Dispose模式