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