TCP/IP 协议本身就是考虑了硬件的不稳定性,所以会有一定的容忍度
OnError 是会触发的,不过要看你超时的设置,
如果你想立即知道,可以用别的办法:
1.比如每隔10秒钟检查一下Ras的连接状态,并配合调用
GetHostName, GetHostByName, 之后得到的Host结构了解本机的IP地址(拨
号成功之后如果PPP/SLIP协议握手成功,本机就会多一个IP地址,断开之后
恢复原状),问题应该就算解决了
2.调用微软 Internet API
function GetOnlineStatus : Boolean;
var ConTypes : Integer;
begin
ConTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
if (InternetGetConnectedState(@ConTypes, 0) = False)
then Result := False
else Result := True;
end;
3.据说查注册表也可以,我自己未用过:
在注册表的HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/RemoteAcces分支下,
当未连通因特网时,Remote Connection的键值为00 00 00 00,当连通时,其键值为01 00 00 00,
通过这一键值就可以作出判断。