如何在程序中判断局域网上的的机器连接互联网的状态 (50分)

  • 主题发起人 主题发起人 whjun_mail
  • 开始时间 开始时间
W

whjun_mail

Unregistered / Unconfirmed
GUEST, unregistred user!
如何判断lan中的机器连接互联网的状态

谢谢


 
不好意思,我看到了你的信,但是我也没有办法解决这个问题,很多朋友出了很多点子,
给了好些代码,但是并不能比较完善地解决问题,所以我如果检测出是在局域网中的话,
就不判断是否连入互联网了。反正局域网大部分时间都会在线,就算不在线,通过设置
可以使它网内一旦有请求服务器就会自动拔号上网,所以问题也不大,呵呵。
 
有没有知道怎样判断的,请指教!!!!!!!
如果能解决问题再加50分
 
通过FindWindow('#32770',nil)可以获取网络状态。
 
这个是很困难的,还不如看看是否可以连接到你要的地方算了,反正知道了
状态也没有什么用,连不上的,还是连不上。。
 
to cjf
我在程序中判断lan的网络状态,不是想连哪个网站,而是判断如果是连接状态,再程序的
主窗口上显示一个图片来说明现在的网络是连接状态,否则,显示另一张图片来说明网络
没有连接,相应的操作是不能进行的
 
ping....一下,呵呵
 
有没有高手帮帮忙??????
 
可以用ics中ping控件来解决的,
只要能ping得通当地ISP的dns服务器,即可判断出是否连接互联网。

比如我当地8163的dns服务器是202.101.98.55,只要ping得通就八九不离十了
 
to casey
我在程序中是时时监控lan中的的机器是否与互联网相连。我最长是60秒钟判断一次。这样的
话你的方法可行吗????
 
我想指定一个站点检测应该可以说是最简单的办法了。
 
我是5秒钟判断一次,60秒钟应该不是问题吧?
procedure TForm1.Ping1EchoReply(Sender, Icmp: TObject; Error: Integer);
var code:integer;
begin
code:=ping1.reply.status;
if code=0 then ... //0表示ping得通。
end;
 
当lan中的服务器用windows'98 第二版自带的Internet共享时,上述方法才有效。

碰到sygate好像就不行了,因为只能ping到lan服务器,再出去就ping不通了

其他的代理服务器还没试过。
 
我用的是sygate,怎么解决呢???还必须得用ics中的ping控件????
 
我用的是MS Proxy代理服务器,也没有办法Ping到外界服务器,所以我才会放弃检测。
 
是否可以用serversocker和clientsocker[:)]
 
能不能用尝试打开internet某服务器的某个端口(比如80)的方法来判断是否连接Intenet?
 
我在网上找到这样的一个东东。但他总返回真,没能解决我的问题

if GetSystemMetrics(SM_NETWORK) and $01 = $01 then
showmessage('连接成功');

不知道这是什么原理
 
to whjum_mail
getsystemmetrics可用来读取系统当前的状态信息, 而windows自动会将许多的系统
信息写入注册表, 所你的方法是可行的, 看一看api help 你会发现此函数可获得更多系统
信息.
 
后退
顶部