看了坛子里的一些faq,大侠们给出了一些办法探测网络的状态
比如NdisMIndicateStatus,IsNetworkAlive啊之类的,但是很多好象都是在VC的lib和include中没有的函数,要不就是针对Windows CE的。
有没有简单的办法来实现呢?Windows 2K可是一下子就知道我把网线拔下了啊。
还请赐教啊!多谢
比如NdisMIndicateStatus,IsNetworkAlive啊之类的,但是很多好象都是在VC的lib和include中没有的函数,要不就是针对Windows CE的。
有没有简单的办法来实现呢?Windows 2K可是一下子就知道我把网线拔下了啊。
还请赐教啊!多谢
如果本机网线断了。那么发送数据就会失败或没有回音。
你可用tcp的3次握手连接。即不占用系统的内存,也很方便。
即时探测Socket断开可以通过Recv的返回值判断
GetPeerName();
它也是发包来检测?跟谁发呢?
{
PPACKET_OID_DATA oidData; // Defined in Ntddpack.h
unsigned int buffLen; // OID memory allocation
unsigned long nRet; buffLen = sizeof(PACKET_OID_DATA) + sizeof(unsigned long) - 1;
oidData = (PPACKET_OID_DATA) GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT, buffLen);
if (oidData == NULL)
return FALSE; oidData->Oid = OID_GEN_MEDIA_CONNECT_STATUS;
oidData->Length = sizeof(unsigned long);
if ((PacketRequest(lpAdapter,0, oidData)) > 0)
{
nRet = *(unsigned long *)oidData->Data;
GlobalFreePtr(oidData);
return nRet;
}
else
{
GlobalFreePtr(oidData);
return FALSE;
}
}
和pack32.lib
只有设置定时发送数据包,如果接受不成功
说明网线端开!