使用libnet_open_link_interface获取网卡信息的问题i

alaxis 2009-01-21 03:46:27
struct libnet_link_int *l;
char ebuf[PCAP_ERRBUF_SIZE];
l = libnet_open_link_interface((char *)szNicName, ebuf);
if (!l)
{
return;
}
// get the interface info
unsigned long ulIP = htonl(l->g_Info->LocalIp);
unsigned long ulMask = htonl(l->g_Info->NetMask);
unsigned long ulGateway = htonl(l->g_Info->DefaultGateway);

为啥获取到的DefaultGateway永远是0?请各位高手指教,谢谢!
...全文
290 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanmeining 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 alaxis 的帖子:]
struct libnet_link_int *l;
char ebuf[PCAP_ERRBUF_SIZE];
l = libnet_open_link_interface((char *)szNicName, ebuf);
if (!l)
{
return;
}
// get the interface info
unsigned long ulIP = htonl(l->g_Info->LocalIp);
unsigned long ulMask = htonl(l->g_Info->NetMask);
unsigned long ulGateway = htonl(l->g_Info->DefaultGateway);

为啥获取到的DefaultGateway永远是0?请各位高手指教,谢谢!
[/Quote]
难道libnet_open_link_interface()失败了?
alaxis 2009-01-22
  • 打赏
  • 举报
回复
代码里写错一句话。。。。。
// adapter IP address list
PIP_ADDR_STRING pIpAddressList = &pAdapterInfo->IpAddressList;

// adapter default gateway list
PIP_ADDR_STRING pGatewayList = &pAdapterInfo->GatewayList;
alaxis 2009-01-22
  • 打赏
  • 举报
回复
今天用了GetAdaptersInfo试了一下,效果不错,共享代码片断。

typedef struct net_interface
{
CString strIfName;
CString strIfDesc;
map<CString, CString> strIfIPAddrList; // <ip, mask>
CString strIfMacAddr;
list<CString> IfDefaultGWList;
}NetInterface, *pNetInterface;

map<CString, NetInterface> m_IfList;

IP_ADAPTER_INFO theAdapterInfo;
ULONG ulOutBufLen = 0;
if (ERROR_BUFFER_OVERFLOW == GetAdaptersInfo(&theAdapterInfo, &ulOutBufLen))
{
if (ERROR_SUCCESS != GetAdaptersInfo(&theAdapterInfo, &ulOutBufLen))
{
return FALSE;
}
else
{
PIP_ADAPTER_INFO pAdapterInfo = &theAdapterInfo;
while (pAdapterInfo != NULL)
{
NetInterface theIf;
// adapter name
theIf.strIfName = pAdapterInfo->AdapterName;
// adapter description
theIf.strIfDesc = pAdapterInfo->Description;
// adapter IP address list
PIP_ADDR_STRING pIpAddressList = pAdapterInfo->IpAddressList;
while (pIpAddressList != NULL)
{
theIf.strIfIPAddrList.insert(map<CString, CString>::value_type(pGatewayList->IpAddress.String, pGatewayList->IpMask.String));
pIpAddressList = pIpAddressList->Next;
}
// adapter MAC address
char szMac[20];
MacToString(pAdapterInfo->Address, szMac);
theIf.strIfMacAddr = szMac;
// adapter default gateway list
PIP_ADDR_STRING pGatewayList = pAdapterInfo->GatewayList;
while (pGatewayList != NULL)
{
theIf.IfDefaultGWList.push_back(pGatewayList->IpAddress.String);
pGatewayList = pGatewayList->Next;
}
// insert the adapter into the m_IfList
m_IfList.insert(map<CString, NetInterface>::value_type(theIf.strIfName, theIf));

pAdapterInfo = pAdapterInfo->Next;
}
}
}
alaxis 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tanmeining 的回复:]
难道libnet_open_link_interface()失败了?
[/Quote]

当然不是,呵呵,LocalIp和NetMask都获取到了,就是DefaultGateway是0,单步调试的时候看得很清楚。毕竟是开源的东西啊,可能是作者觉得没有必要设置吧,也可能是bug,不知道最新版本里面有没有修复。。。
alaxis 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oyljerry 的回复:]
可以用IpHelper API
GetAdapterInfo()获得网卡信息
[/Quote]

恩,前面也想到了,一会儿去试试,嘿嘿
oyljerry 2009-01-21
  • 打赏
  • 举报
回复
可以用IpHelper API
GetAdapterInfo()获得网卡信息
xiaoyisnail 2009-01-21
  • 打赏
  • 举报
回复
帮顶~
星羽 2009-01-21
  • 打赏
  • 举报
回复
没用过,你看看这个由帮助不 http://blog.csdn.net/3moods/archive/2004/07/13/40870.aspx
ckt 2009-01-21
  • 打赏
  • 举报
回复
up 2
nullah 2009-01-21
  • 打赏
  • 举报
回复
up
waizqfor 2009-01-21
  • 打赏
  • 举报
回复
帮顶一下
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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