看一个网络嗅探器的源码,有个地方不太明白,问问!!

zhoufanking 2005-08-31 12:45:50
源码在这里: http://www.pcptel.com/content/view/243/33/

我不明白的地方是:
在第三个黄方框中,找到设备后记录设备列表到AdapterList时:while ((*temp!='')||(*(temp-1)!=''))。。。。。。

while语句判断的条件是什么意思啊?最开始*temp就是AdapterList[0],那么*(temp-1)是什么啊?
...全文
241 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习
jinjiajie 2006-03-29
  • 打赏
  • 举报
回复
...楼主的代码太片面,如果只是a[0]-1的话,指向的位置就未知了
Alaylm 2006-03-29
  • 打赏
  • 举报
回复
*(--temp) 这样的吧?
ellx 2006-03-29
  • 打赏
  • 举报
回复
学习中
mp6 2006-03-28
  • 打赏
  • 举报
回复
学习
citywanderer2005 2006-03-28
  • 打赏
  • 举报
回复
学习
pencil001 2005-08-31
  • 打赏
  • 举报
回复
它既然用了winpcap,其实可以这样做
pcap_if_t *alldevs;
pcap_if_t *curdev;
char errbuf[PCAP_ERRBUF_SIZE];

/* Retrieve the device list */
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
// Error
temp.Format("Error in pcap_findalldevs: %s !", errbuf);
AfxMessageBox(temp, MB_ICONSTOP);
}
else
{
/* Print the list */
for(curdev=alldevs;curdev->next;curdev=curdev->next)
{
this->m_adapter.AddString(curdev->name);
++i;
}
this->m_adapter.AddString(curdev->name);
++i;
if(i==0)
{
AfxMessageBox("No interfaces found! Make sure WinPcap is installed.", MB_ICONSTOP);
}
bugebear3 2005-08-31
  • 打赏
  • 举报
回复
MARK
avder 2005-08-31
  • 打赏
  • 举报
回复
关注
zhoufanking 2005-08-31
  • 打赏
  • 举报
回复
还是不太明白,这和前一个设备句柄有啥关系呢?
zhouhuahai 2005-08-31
  • 打赏
  • 举报
回复
最开始*temp就是AdapterList[0],那么*(temp-1)是什么

temp - 1是指 指针temp - sizeof(type); type是temp所指向的类型.
也可写成temp[-1],这样可能更好理解些.

*(temp-1)即temp所指向元素的前一个元素.(前一个设备句柄).

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧