现在想从数据链路层直接抓数据,别人发的速率很快,但是我这边收到数据,显示的话,非常慢,
通常是别人那边都停止了很长时间,我这边还在接收,
想请问一下这是个什么问题呢。
之前用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;
}
通常是别人那边都停止了很长时间,我这边还在接收,
想请问一下这是个什么问题呢。
之前用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;
}
解决方案 »
- Automation的IMPLEMENT_OLECREATE2到底会在什么时候被调用? 谁调用它?
- 如何得到一个网站的图标文件呢?
- 单位要我立刻配一服务器!
- 不知道windows 平台 C++ 开发,现在大家都用VC++.net吗?或者VC6
- 想参加一培训班,VC.net方面的,没有C++基础,请问北京哪个培训班好?
- API中响应按钮的问题,请进!
- ListControl如何改变关键字符的颜色
- mfc 如何把一个窗口中的listctrl里的内容加到另一个窗口的 listctrl中?
- 用位图创建不规则窗口
- 问大家一个简单的问题:static和const有什么区别?
- 如何获取主机公网IP?
- 树控右键添加菜单后的问题
建个缓冲队列,那么同步开销变为对队列的增删,改用PostMessage,性能应该会提高
thx、、