网络编程中,在数据链路层捕数据在显示出来这么慢

网络编程中,在数据链路层抓数据在显示出来这么慢
现在想从数据链路层直接抓数据,别人发的速率很快,但是我这边收到数据,显示的话,非常慢,
通常是别人那边都停止了很长时间,我这边还在接收,
想请问一下这是个什么问题呢。
之前用socket编程好像都比较快啊,不知道为什么现在这么慢,是否有解决办法,使之能够实时显示。
谢谢。

代码如下:

C/C++ code

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;
}



------解决方案--------------------
探讨

引用:

收到以后,放入一个缓冲里。
显示时,从缓冲力取数据


这个岂不是还要做同步处理、、?