扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:佚名 来源:CSDN 2007年11月13日
关键字: C# Raw Socket 网络封包 监视
[StructLayout(LayoutKind.Explicit)] public struct IPHeader { [FieldOffset(0)] public byte ip_verlen; //I4位首部长度+4位IP版本号 [FieldOffset(1)] public byte ip_tos; //8位服务类型TOS [FieldOffset(2)] public ushort ip_totallength; //16位数据包总长度(字节) [FieldOffset(4)] public ushort ip_id; //16位标识 [FieldOffset(6)] public ushort ip_offset; //3位标志位 [FieldOffset(8)] public byte ip_ttl; //8位生存时间 TTL [FieldOffset(9)] public byte ip_protocol; //8位协议(TCP, UDP, ICMP, Etc.) [FieldOffset(10)] public ushort ip_checksum; //16位IP首部校验和 [FieldOffset(12)] public uint ip_srcaddr; //32位源IP地址 [FieldOffset(16)] public uint ip_destaddr; //32位目的IP地址 } |
private bool error_occurred; //套接字在接收包时是否产生错误 public bool KeepRunning; //是否继续进行 private static int len_receive_buf; //得到的数据流的长度 byte [] receive_buf_bytes; //收到的字节 private Socket socket = null; //声明套接字 |
const int SIO_RCVALL = unchecked((int)0x98000001);//监听所有的数据包 |
public RawSocket() //构造函数 { error_occurred=false; len_receive_buf = 4096; receive_buf_bytes = new byte[len_receive_buf]; } |
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; } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者