软件注册站
热情软件屋

 
如何编程实现检测网线是否被拔下
编号: QA004935    
建立日期: 2005年8月22日 最后修改日期: 2005年8月22日
所属类别: C/C++ - 网络与通信

Visual Basic - 网络与通信
   
    操作系统:WIN2000
    编程工具:VB6
    问题:在VB6中如何编程实现检测网线是否被拔下?我所使用的是WIN2000操作系统,机器中有两块网卡,我想通过编程检测到当前哪块网卡连接网线,哪块网卡网线被拔下。(辛雨)
   
    可利用SDK API:GetAdaptersInfo以及GetIfEntry实现。
    GetAdaptersInfo返回系统中的所有网卡信息。
    GetIfEntry则返回制定网口的速率、状态等信息。
    如果觉得将相关数据结构改造到VB下很痛苦的话,可编写一个短小的DLL完成网口检测工作,并仅返回检测结果即可。
    VC代码:
    DWORD dwOutBufLen=0;
    
    
PIP_ADAPTER_INFO pAdapterInfo=NULL,pAdapter=NULL;
    
    
MIB_IFROW zSNMP;
    
    
char sTemp[20];
    
    
int iReturn;
    
    
    
    
iReturn=GetAdaptersInfo(pAdapterInfo,&dwOutBufLen);
    
    
if(iReturn!=ERROR_BUFFER_OVERFLOW)
    
    
{
    
    
return 0;
    
    
}
    
    
    
    
pAdapterInfo =(PIP_ADAPTER_INFO) HeapAlloc(GetProcessHeap(), 0, dwOutBufLen);
    
    
iReturn=GetAdaptersInfo(pAdapterInfo,&dwOutBufLen);
    
    
if(iReturn!=ERROR_SUCCESS)
    
    
{
    
    
HeapFree(GetProcessHeap(), 0, pAdapterInfo);
    
    
return 0;
    
    
}
    
    
pAdapter=pAdapterInfo;
    
    
    
    
//find if there is ppp adapter
    
    
while(pAdapter!=NULL )
    
    
{
    
    
zSNMP.dwIndex = pAdapter->Index;
    
    
iReturn=GetIfEntry(&zSNMP);
    
    
if(iReturn!=NO_ERROR)
    
    
return 0;
    
    
    
    
m_iIfSpeed=zSNMP.dwSpeed/(1000*1000);
    
    
m_iIfAdminStatus=zSNMP.dwAdminStatus;
    
    
m_iIfOperStatus=zSNMP.dwOperStatus;
    
    

    
    
pAdapter=pAdapter->Next;
    
    
}
    
    

    
    相关问题:
    QA004917 "如何检测本机发送和接收的数据包"

    

此问题由Wang Chuanfa回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Visual Basic, VB, 网络与通信, network, communicate, com, com1, com2

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio