请教一网络检测代码中的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 swlove
  • 开始时间 开始时间
S

swlove

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Delphi中用下面检测本机的网络连接...

编译后,网络正常能打开网页时能提示“成功连通”,手动停用本地连接或者拔掉网线时也能提示“没有连通”;
但如果掉线,比如挂BT掉线后打不开网页时仍是提示“成功连通”!
请问问题是出在哪里呢 ?如何修改才能实现掉线后马上提示“没有连通”
谢谢


procedure TFrmPing.Ping;
var
IPOpt: TIPOptionInformation;
pReqData, pRevData: PChar;
pIPE: PIcmpEchoReply;
FIPAddress: DWORD;
FSize: DWORD;
MyString: string;
FTimeOut: DWORD;
BufferSize: DWORD;
begin
if Trim(EdIP.Text) <> '' then
begin
FIPAddress := inet_addr(Pchar(EdIP.Text));
FSize := 40;
BufferSize := SizeOf(TICMPEchoReply) + FSize;
GetMem(pRevData, FSize);
GetMem(pIPE, BufferSize);
FillChar(pIPE^, SizeOf(pIPE^), 0);
pIPE^.Data := pRevData;
MyString := 'I''m Terry,Pinging your Computer now!!';
pReqData := PChar(MyString);
FillChar(IPOpt, Sizeof(IPOpt), 0);
IPOpt.TTL := 64;
FTimeOut := 400;
IcmpSendEcho(hICMP, FIPAddress, pReqData, Length(MyString), @IPOpt, pIPE, BufferSize, FTimeOut);
if pIPE^.Status = 0 then
begin
LblSStatus.Caption := '成功连通';
LblSAddr.caption := inttostr(pIPE^.Address);
LblSDataSize.Caption := inttostr(pIPE^.DataSize);
LblSRTT.Caption := inttostr(pIPE^.RTT);
if pIPE^.RTT < 1 then
LblSRTT.Caption := '小于1毫秒';
end
else
begin
LblSStatus.Caption := '没有连通';
LblSAddr.caption := '';
LblSDataSize.Caption := '';
LblSRTT.Caption := '';
end;
FreeMem(pRevData);
FreeMem(pIPE, BufferSize);
end;
end;
 
function IsInNet:boolean;
var
eR : DWORD;
sName{,sMsg}:string;
begin
eR := 0;
result := InternetConnected(eR, sName);

end;
现成的方法啊,掉线不一定是网络断开,只是当前时刻网络传输中断,但是物理连接还存在
 
编译没有通过

我uses Wininet 后,错误信息提示 Undeclared identifier: 'InternetConnected'

能否给出详细的示例 ?

谢谢
 
后退
顶部