#define SENDBUFLENG 64eth.eh_dst[0]=0x00;//目标MAC(192.168.9.250地址)
eth.eh_dst[1]=0x05;
eth.eh_dst[2]=0x5d;
eth.eh_dst[3]=0x22;
eth.eh_dst[4]=0xfb;
eth.eh_dst[5]=0xa0;
eth.eh_src[0]=0x00;//发方MAC(192.168.9.180地址)
eth.eh_src[1]=0x50;
eth.eh_src[2]=0xeb;
eth.eh_src[3]=0x03;
eth.eh_src[4]=0x5b;
eth.eh_src[5]=0xb1;
eth.eh_type=htons(ETH_IP);//协议类型memcpy(sendbuf,ð,sizeof(eth));
ipHeader.h_lenver=(4<<4 | sizeof(ipHeader)/sizeof(unsigned long));
ipHeader.tos=0;
ipHeader.total_len=SENDBUFLENG;
ipHeader.ident=(USHORT)GetCurrentProcessId();
ipHeader.frag_and_flags=0;
ipHeader.ttl=128;
ipHeader.proto=IPPROTO_ICMP;
ipHeader.sourceIP=inet_addr("192.168.9.180");
ipHeader.destIP=inet_addr("192.168.9.250");
ipHeader.checksum=0;icmpHeader.i_type=ICMP_ECHO;
icmpHeader.i_code=0;
icmpHeader.i_cksum=0;
icmpHeader.i_id=(USHORT)GetCurrentProcessId();
icmpHeader.i_seq=0x00;
icmpHeader.Data=0;memset(szsendbuf, 0, SENDBUFLENG);
memcpy(szsendbuf,&ipHeader,sizeof(IP_HEADER));
memcpy(szsendbuf+sizeof(IP_HEADER),&icmpHeader,sizeof(icmpHeader));icmpHeader.i_cksum=checksum((USHORT*)(szsendbuf+sizeof(IP_HEADER)),SENDBUFLENG-sizeof(IP_HEADER));ipHeader.checksum=checksum((USHORT*)szsendbuf,sizeof(IP_HEADER));memcpy(szsendbuf,&ipHeader,sizeof(IP_HEADER));
memcpy(szsendbuf+sizeof(IP_HEADER),&icmpHeader,sizeof(icmpHeader));
PacketInitPacket(lppackets,sendbuf,sizeof(eth)+SENDBUFLENG);
PacketSendPacket(lpadapter,lppackets,TRUE);PING 路由器时,返回数据被本机抛弃
eth.eh_dst[1]=0x05;
eth.eh_dst[2]=0x5d;
eth.eh_dst[3]=0x22;
eth.eh_dst[4]=0xfb;
eth.eh_dst[5]=0xa0;
eth.eh_src[0]=0x00;//发方MAC(192.168.9.180地址)
eth.eh_src[1]=0x50;
eth.eh_src[2]=0xeb;
eth.eh_src[3]=0x03;
eth.eh_src[4]=0x5b;
eth.eh_src[5]=0xb1;
eth.eh_type=htons(ETH_IP);//协议类型memcpy(sendbuf,ð,sizeof(eth));
ipHeader.h_lenver=(4<<4 | sizeof(ipHeader)/sizeof(unsigned long));
ipHeader.tos=0;
ipHeader.total_len=SENDBUFLENG;
ipHeader.ident=(USHORT)GetCurrentProcessId();
ipHeader.frag_and_flags=0;
ipHeader.ttl=128;
ipHeader.proto=IPPROTO_ICMP;
ipHeader.sourceIP=inet_addr("192.168.9.180");
ipHeader.destIP=inet_addr("192.168.9.250");
ipHeader.checksum=0;icmpHeader.i_type=ICMP_ECHO;
icmpHeader.i_code=0;
icmpHeader.i_cksum=0;
icmpHeader.i_id=(USHORT)GetCurrentProcessId();
icmpHeader.i_seq=0x00;
icmpHeader.Data=0;memset(szsendbuf, 0, SENDBUFLENG);
memcpy(szsendbuf,&ipHeader,sizeof(IP_HEADER));
memcpy(szsendbuf+sizeof(IP_HEADER),&icmpHeader,sizeof(icmpHeader));icmpHeader.i_cksum=checksum((USHORT*)(szsendbuf+sizeof(IP_HEADER)),SENDBUFLENG-sizeof(IP_HEADER));ipHeader.checksum=checksum((USHORT*)szsendbuf,sizeof(IP_HEADER));memcpy(szsendbuf,&ipHeader,sizeof(IP_HEADER));
memcpy(szsendbuf+sizeof(IP_HEADER),&icmpHeader,sizeof(icmpHeader));
PacketInitPacket(lppackets,sendbuf,sizeof(eth)+SENDBUFLENG);
PacketSendPacket(lpadapter,lppackets,TRUE);PING 路由器时,返回数据被本机抛弃
解决方案 »
- 为什么我用对话框输出的变量值不是正确的??
- 设置CTreeCtrl不同节点字体的问题
- 怎么放控件到clistctrl中?比如checkbox
- 高手求命
- 选用什么控件呢?
- vc使用soap和com进行通信或者说soap访问com的接口函数的例子,急,在线等,立刻接分!
- 如何在web界面上的edit控件上填写数据?
- installshield如何指定安装路径?
- microsoft 的bug ,问题很复杂,MFC编写的ActiveX控件为什么在Web页面上总是浮现为最上层,其他页面无法覆盖
- [x64]开源的ImagePrinter如何修改去支持X64环境
- 一般来说debug版不出错,release会出错问题出在哪里?
- 在建立vc 工程的时候选择了生成hlp 文件。我把我的工程放到别的机器上的时候有如下的错误
//使用winpcap库函数发送包
LPPACKET pPacket;
if((pPacket = PacketAllocatePacket())==NULL)
{
AfxMessageBox("\nError:failed to allocate the LPPACKET structure.");
return ;
}
memset(pPacket,0,sizeof(LPPACKET));
pPacket->Buffer=szSendBuf;
PacketInitPacket(pPacket,pPacket->Buffer,strlen(szSendBuf));
// capture the packet
if(PacketSetNumWrites(lpAdapter,2)==FALSE)
{
AfxMessageBox("warning: Unable to send more than one packet in a single write!\n");
}
if(PacketSendPacket(lpAdapter,pPacket,TRUE)==FALSE)
{
AfxMessageBox("Error sending the packets!\n");
return ;
}