有谁用Winpcap发过数据包???

alphagx 2005-04-12 09:45:45
我电脑上有一块网卡,
如果我不拨上VPN服务器,我用第一块网卡进行发送数据包没有问题。

但如果拨上VPN后,用第二块网卡就行发送的时候就出问题了。
数据包发送不出去

我用ethereal 抓到的包直接往外面发送也不行。

有没有人遇到过这样的问题??
非常感谢。
...全文
190 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphagx 2005-04-12
  • 打赏
  • 举报
回复
第二块网卡因为是虚拟网卡,ndiswan。
禁掉第一块一样不能发送。

ndiswan属于中间层,它将上层发下来的lan数据包转换成PPPOE的格式,然后再向物理
网卡上进行发送。


to:tbcookie
http://faq.9966.org/SendPkt.rar
这里面处理MAC地址的时候有点问题,不过那是好久前写的东东了,
我就没改。

tbcookie 2005-04-12
  • 打赏
  • 举报
回复
楼主,我刚学winpcap这个东西,现在一个包也没发出去呢,汗!!!!
能不能把你发包的程序给我一个呢????,如果你愿意的话,^_^十分感谢
tbcookie@163.com
oyljerry 2005-04-12
  • 打赏
  • 举报
回复
两块网卡之间什么关系,是否连接冲突等
qrlvls 2005-04-12
  • 打赏
  • 举报
回复
没有遇到过
Jimmy_Xia 2005-04-12
  • 打赏
  • 举报
回复
没有做过,楼主试试这样行不行,在第二块网卡发送数据的时候,将第一块网卡屏蔽掉(即禁用第一个网络连接)看看能不能发送数据。这个实验主要是看看是第二块网卡自身的问题还是两块网卡一起连接而引起的问题。
tbcookie 2005-04-12
  • 打赏
  • 举报
回复
应该是pack.arpFrame.Send_Prot_Addr = inet_addr("218.199.136.196"); // 源IP
tbcookie 2005-04-12
  • 打赏
  • 举报
回复
多谢楼主了,我的包发出去了,可是一点反应也没有.晕啊,我只是想发一个ARP的请求包,
我估计是我的包数据填错了,有空能不能帮我瞅一眼.谢了


// DLC Header
typedef struct tagDLCHeader
{
unsigned char DesMAC[6]; /* destination HW addrress */
unsigned char SrcMAC[6]; /* source HW addresss */
unsigned short Ethertype; /* ethernet type */
} DLCHEADER, *PDLCHEADER;
// ARP Frame
typedef struct tagARPFrame
{
unsigned short HW_Type; /* hardware address */
unsigned short Prot_Type; /* protocol address */
unsigned char HW_Addr_Len; /* length of hardware address */
unsigned char Prot_Addr_Len; /* length of protocol address */
unsigned short Opcode; /* ARP/RARP */
unsigned char Send_HW_Addr[6]; /* sender hardware address */
unsigned long Send_Prot_Addr; /* sender protocol address */
unsigned char Targ_HW_Addr[6]; /* target hardware address */
unsigned long Targ_Prot_Addr; /* target protocol address */
unsigned char padding[18];
} ARPFRAME, *PARPFRAME;
// ARP Packet = DLC header + ARP Frame
typedef struct tagARPPacket
{
DLCHEADER dlcHeader;
ARPFRAME arpFrame;
} ARPPACKET, *PARPPACKET;


这是填数据的:
ARPPACKET Carp2Dlg::fillpacket()
{
ARPPACKET pack;
memset(&pack, 0, sizeof(ARPPACKET)); // 数据包初始化
formatStrToMAC("0000f08990bd",pack.dlcHeader.SrcMAC); // DLC帧头
formatStrToMAC("ffffffffffff",pack.dlcHeader.DesMAC);
formatStrToMAC("0000f08990bd",pack.arpFrame.Send_HW_Addr); // 源MAC
pack.arpFrame.Send_Prot_Addr = inet_addr("218.199.136.192"); // 源IP
formatStrToMAC("ffffffffffff",pack.arpFrame.Targ_HW_Addr); // 目的MAC
pack.arpFrame.Targ_Prot_Addr = inet_addr("218.199.136.192"); // 目的IP
pack.arpFrame.Opcode = htons((unsigned short)1); // arp包类型
// 自动填充的常量
pack.dlcHeader.Ethertype = htons((unsigned short)0x0806); // DLC Header的以太网类型
pack.arpFrame.HW_Type = htons((unsigned short)1); // 硬件类型
pack.arpFrame.Prot_Type = htons((unsigned short)0x0800); // 上层协议类型
pack.arpFrame.HW_Addr_Len = (unsigned char)6; // MAC地址长度
pack.arpFrame.Prot_Addr_Len = (unsigned char)4; // IP地址长度
for(int i=0;i<18;i++)
{
pack.arpFrame.padding[i]=0;
}
return pack;
}
帮忙看看那儿填错了吧,十分感谢!!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧