怎么判断机器联接互联网. ( 积分: 100 )

  • 主题发起人 主题发起人 lslyl
  • 开始时间 开始时间
uses wininet

if InternetCheckConnection('http://www.163.com/', 1, 0) then
edt1.text := 'Connected'
else
edt1.text := 'Disconnected';
 
wininet 这个那里有啊?
 
if GetSystemMetrics(SM_NETWORK) and $01 = $01 then
showmessage('连接成功');
getsystemmetrics是用于读取系统当前的状态信息,具体可
查看 API help。
 
uses wininet

if InternetCheckConnection('http://www.163.com', 1, 0) then
edt1.text := 'Connected'
else
edt1.text := 'Disconnected';
同意不错这个是指网络连接的不是检测isp是否提供服务
 
楼上的这个不行.无法检测internet联接状态.
 
楼上的都不行.有没有知道的.
 
楼主,我试了这个函数,可以测试哦.
不过这个函数存在的一个问题是:当测试用的网址存在故障时,连接测试也是失败的....
 
接入互联网有太多的方法,而且互联网和其他的网络并没有什么区别。单位的内部局域网/国际互联网的主要差别就是能够访问的资源的不同。因此我认为检测网址是比较合适的。
 
检测网址那个不行呀.我是内网没有上互联网可是if InternetCheckConnection('http://www.163.com', 1, 0) then 是真呀.测不出来呀.
 
具体代码可以用很多种
不过原理都一样
使用Winsock函数连接到公网上的多个网址
只要有一个能连上并返回你想知道的串就说明能上Internet
否则就没连上或者网速极慢
 
用INDY的TIdIcmpClient,这是一个PING程序,代码如下:

Function ping(Host:String;Timeout:Integer):String;
var
ICMP:TIdIcmpClient;
begin
Result:='';
ICMP:=TIdIcmpClient.Create(nil);
try
ICMP.ReceiveTimeout:=Timeout;
ICMP.Host:=Host;
ICMP.Ping;
Result:=ICMP.ReplyStatus.FromIpAddress;
ICMP.Free;
except
ICMP.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
address,ping_info:string;
begin
address:='www.sina.com.cn';
ping_info:=ping(address,10000);
if (ping_info='0.0.0.0') or (ping_info='') then showmessage('Disconnected') else showmessage('Connected');
end;
 
我在联网状态ping 外网都不行.这个也不行呀.www.sina.com.cn就ping不能.我ping了N多网站没有能ping能的.用这个那所有的状态都是不通.
 
那你PING外网都PING不通,你是怎么上互联网的呢?
 
能上互联网呀.我用的长城宽带呀.好像所有的外网服务器都不能ping.ping也不会返回值
 
uses WinInet;

procedure TForm1.Button1Click(Sender: TObject);

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;

begin
if GetOnlineStatus then
ShowMessage(' Connected')
else ShowMessage(' not Connected');
end;
 
你这个就更老了.哈哈.楼上的什么都测不出来.除非网卡坏了.
 
GetSystemMetrics
这个是可以的,
但只限于第一次的测试,中途断网就不好用了。
我感觉,应该PING命令的是个很好的方式。
而且,如果,自己能上网的话,www.sina.com.cn是一定能PING通的。
只是,他们的服务器很多,每次回来的IP不一样而以。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部