现在想从数据链路层直接抓数据,别人发的速率很快,但是我这边收到数据,显示的话,非常慢,
通常是别人那边都停止了很长时间,我这边还在接收,
想请问一下这是个什么问题呢。
之前用socket编程好像都比较快啊,不知道为什么现在这么慢,是否有解决办法,使之能够实时显示。
谢谢。代码如下:
void CEtherData_monitorDlg::packet_handler(u_char* packets,const struct pcap_pkthdr * header,const u_char *data)
{
CEtherData_monitorDlg *pl = (CEtherData_monitorDlg *) packets;//this指针 struct ether_header *eth; //以太网帧报头指针  
u_char* mac_string;
u_char tmp[1000]="";

eth=(struct ether_header *)data;
mac_string=eth->ether_shost;

    if(*mac_string==0x08&&*(mac_string+1)==0x08&&*(mac_string+2)==0x08&&*(mac_string+3)==0x08
&&*(mac_string+4)==0x08&&*(mac_string+5)==0x08)
{
memcpy (tmp, data+14, eth->ether_type);
// 控件显示数据
strncat((char *)tmp,"\0",1);
CString csTemp;
csTemp.Format("%d:%d : %s",header->ts.tv_sec,header->ts.tv_usec,tmp);
pl->m_infor.InsertString(csTemp);
}
}UINT CEtherData_monitorDlg::threadFun(LPVOID pParam)
{
CEtherData_monitorDlg * pl =(CEtherData_monitorDlg *) pParam;
pcap_loop(pl->adhandle, 0, packet_handler, (u_char *)pParam); return 0;
}