阅读:1261回复:5
请一定帮帮我.代码问题
上一次请问了如何发送自定义的IP包,有人告诉我使用Packet32.dll
我用了.是成功了,由于没有详细的资料,碰到一个奇怪的问题. 在调用PacketSendPacket function 时,如果Packet->buffet=\"abcd\" 这样的正常字符发送,我可以在网络监视器中查到. 但如果13Packet->buffet=\"\\0x0a\\0x54\\0x20\\0x00\\0x68\\0x99\"这样的含有特殊字符,在网络监视器中就截不到了? 这是为什么?构建一个IP包里面不是有很多特殊字符吗?我想一定是还有什么需要设置的或是别的什么,但是没有足够的资料,我不知道需要怎么做,希望大家能够帮帮我. |
|
|
沙发#
发布于:2002-06-20 03:02
上一次请问了如何发送自定义的IP包,有人告诉我使用Packet32.dll 以下为乱猜: 你查的时候。。。。是当字符串还是二进制? 是否考虑过“\\”的转义? :D |
|
|
板凳#
发布于:2002-06-20 09:04
我是用W2K自带的网络监视器查的,他可以截取本机发送和接收的包,可是我没有办法找到我的包,可能是改成了特殊字符以后,就没有发送出去了.但是PacketSendPacket 返回的是TRUE.我真不知道是什么原因.
发送代码如下: LPADAPTER lpAdapter = 0; LPPACKET lpPacket; LPTSTR astr; LPCTSTR LASTR; char buffer[256000]; // buffer to hold the data coming from the driver if(m_Adapter.GetCurSel()<0){this->MessageBox(\"请您选定一块网络适配器!!\");return;} this->m_Adapter.GetText(m_Adapter.GetCurSel(),v_Adapter); astr=(LPTSTR)this->v_Adapter.GetBuffer(); //LASTR=this->v_Adapter.GetString(); //this->MessageBox(LASTR); lpAdapter=PacketOpenAdapter(astr); if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE)) { this->MessageBox(\"Error Select Adapter\"); return; } if(PacketSetMode(lpAdapter,0)==FALSE){ //我不知道有什么Mode,只知道0,1可选,也不知道有什么作用,但是有没有这一句都一样 this->MessageBox(\"Set Adapter Mode Error!\"); return; } if(PacketSetBuff(lpAdapter,512000) ==FALSE){ //这一句也不知道有没有用 this->MessageBox(\"Unable to set the kernel buffer!\"); return; } if((lpPacket = PacketAllocatePacket())==NULL){ //分配Packet printf(\"\\nError: failed to allocate the LPPACKET structure.\"); } PacketInitPacket(lpPacket,(char *)buffer,256000); //初始化Packet lpPacket->Length=55; char buftest[1024], buftest[0]=\'\\x00\';buftest[1]=\'\\x0A\';buftest[2]=\'\\xAA\';buftest[3]=\'b\';buftest[4]=\'b\'; lpPacket->Buffer=buftest; if(PacketSendPacket(lpAdapter,lpPacket,TRUE)==FALSE) //发送数据 { this->MessageBox(\"Error Send Data\"); } //释放Packet PacketFreePacket(lpPacket); //关闭适配器 PacketCloseAdapter(lpAdapter); 以下代码在VC.net for Xp 上测试通过.可是发不出去 如果把以上两句修为 lpPacket->Length=4; lpPacket->Buffer=\"abcd\" 则可以发送出去,在网络监视器中能够截取到有信息\"abcd\"发送. [编辑 - 6/20/02 by coolksj] |
|
|
地板#
发布于:2002-06-20 09:55
再补充一下
经过多次测试,发现只有当buftest[0]=\'a\' 或 buftest[0]=\'\\x61\' 的时候可以发送出去(其它的可以任意字符),其它的都不能发送. 这是为什么? [编辑 - 6/20/02 by coolksj] |
|
|
地下室#
发布于:2002-06-20 18:37
怎么没有人回答呢?
这个问题太笨了?帮帮忙嘛,我也是不得以,如果有选择的话,我情愿选择翻几晚上的书找答案. 帮帮我吧. |
|
|
5楼#
发布于:2002-06-20 18:37
怎么没有人回答呢?
这个问题太笨了?帮帮忙嘛,我也是不得以,如果有选择的话,我情愿选择翻几晚上的书找答案. 帮帮我吧. :( :( |
|
|