Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
发送icmp数据包怎么控制内容_数据包已发送有但没有已接收,希望能够帮助你!!!。
typedef struct iphdr {
unsigned int version:4; // IP版本号,4表示IPV4
unsigned int h_len:4; // 4位首部长度
unsigned char tos; // 8位服务类型TOS
unsigned short total_len; // 16位总长度(字节)
unsigned short ident; file://16位标识
unsigned short frag_and_flags; // 3位标志位
unsigned char ttl; file://8位生存时间 TTL
unsigned char proto; // 8位协议 (TCP, UDP 或其他)
unsigned short checksum; // 16位IP首部校验和
unsigned int sourceIP; file://32位源IP地址
unsigned int destIP; file://32位目的IP地址}IpHeader;
然后定义一个ICMP首部:
typedef struct _ihdr {
BYTE i_type; file://8位类型
BYTE i_code; file://8位代码
USHORT i_cksum; file://16位校验和
USHORT i_id; file://识别号(一般用进程号作为识别号)
USHORT i_seq; file://报文序列号
ULONG timestamp; file://时间戳}IcmpHeader;
这时可以同过WSASocket建立一个原始套接口:SockRaw=WSASocket(AF_INET, file://协议族 SOCK_RAW, file://协议类型,SOCK_RAW表示是原始套接口 IPPROTO_ICMP, file://协议,IPPROTO_ICMP表示ICMP数据报 NULL, file://WSAPROTOCOL_INFO置空 0, file://保留字,永远置为0 WSA_FLAG_OVERLAPPED file://标志位); 注:为了使用发送接收超时设置(设置SO今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章