首页 > 技术文章 > WinpCap 使用线程发数,明明发了,返回值0是OK的啊,怎么抓包看不到,难道不支持多线程。。。

fluteary 2016-06-13 09:46 原文

if (!m_adapterHandle)
{
    return false;
}
int rst = pcap_sendpacket((pcap_t*)m_adapterHandle,data ,dataLen);
if(rst != 0)
{
    return true;
}
return false;


看我标黑的就知道了吧,datalen如果为0,发不出去

而且data如果内容全为’\0’,那么也会被屏蔽掉

 

这一点官方文档并没有确切的描述,请注意(当然,正常情况下你的报文应该有protocol headers,那么必然是可以发出去的。)

附API说明:

int pcap_sendpacket
(
pcap_t *
p,

u_char *
buf,

int
size

)

Send a raw packet.

This function allows to send a raw packet to the network. p is the interface that will be used to send the packet, buf contains the data of the packet to send (including the various protocol headers), size is the dimension of the buffer pointed by buf, i.e. the size of the packet to send. The MAC CRC doesn't need to be included, because it is transparently calculated and added by the network interface driver. The return value is 0 if the packet is succesfully sent, -1 otherwise.

推荐阅读