[已解决]判断PC能否访问Internet
本帖最后由 fuinei 于 2012-3-30 08:31 编辑各位好,公司环境中由于策略限制,部分站点被代理服务器屏蔽或无法访问Internet,虽然是无法访问但Internet主机还是可以ping通,请问使用AU3能否判断用户能否正常访问Internet(如www.163.com)吗? Tracert命令 使用Tracert命令不好判断吧?AU3有没有什么比较好的函数或UDF能否判断当前的网络连接能否访问某个域名或地址呢? telnet www163.com 80
通的话就是能访问,端口打不开即不能访问 使用telnet判断是一个很不错的方法,还有没有其它方法呢?
AU3有没有自带的函数可解决这个问题呢? 本帖最后由 calora88 于 2012-3-27 22:09 编辑
$ret=InetGet("http://www.163.com/", 'a.txt', 1, 0)
If $ret=0 Then
MsgBox(1,1,"訪問 163 失敗")
Else
MsgBox(1,1,"訪問 163 成功")
EndIf
If Ping("www.163.com") <> 0 Then
MsgBox(0, 0, "OK")
Else
MsgBox(0, 0, "error")
EndIf
公司环境使用策略禁止用户访问Internet,ping和telnet都是可以的(4楼和7楼兄弟的办法对我都不适用),但实际可能会无法打开指的站点,6楼的方法测试了一下总部返回访问成功,请问各位有没有其它的方法呢? 你可以先把网址改成http://www.1111163.com, 看会失败吗??
如果还是成功的话, 方便把a.txt里面的内容贴上来吗? 不错的方法,学习了 回复 9# calora88
把网址修改为http://www.1111163.com就提示失败了 还是要麻烦你把 url 设成 www.163.com 时的a.txt 贴上来 明天到公司后贴上来,请问有没有不产生临时文件的方法呢? 本帖最后由 fuinei 于 2012-3-29 09:15 编辑
回复 12# calora88
在公司不能访问Internet有两种情况
1、当前系统帐号未通过代理服务器的验证
2、帐号已通过代理服务器的验证但策略限制不能访问Internet
使用InetGet+判断a.txt的内容可判断PC能否访问Internet,谢谢指导!$temp = "c:\temp\a.txt"
InetGet("http://www.163.com", $temp, 1, 0)
$file = FileOpen($temp,0)
If $file = -1 Then
MsgBox(0,"Error","找不到临时文件")
Exit
EndIf
$content = FileRead($file)
If StringInStr($content,"Note: Please have your identity authenticated before accessing the Internet。",1) > 0 Or StringInStr($content,"http://192.168.1.254/disable/disable.htm",1) >0 Then
MsgBox(0,1,"访问163失败")
Else
MsgBox(0,1,"访问163成功")
EndIf
FileDelete($temp)对于我司这种情况不知有没有不需产生临时文件的判断方法呢? 另一个方法$protocol_port = 80
TCPStartup()
$server_ip = TCPNameToIP("127.0.0.1")
$socket = TCPConnect($server_ip, $protocol_port)
ConsoleWrite("TCPConnect socket=" & $socket & " - @error=" & @error & @CRLF)
If $socket = -1 Or @error Then
MsgBox(0, 1, $server_ip & " is DOWN on port " & $protocol_port & @CRLF)
Else
MsgBox(0, 1, $server_ip & " is UP on port " & $protocol_port & @CRLF)
EndIf
TCPShutdown()
; url ------
TCPStartup()
$server_ip = TCPNameToIP("www.163.com")
$socket = TCPConnect($server_ip, $protocol_port)
ConsoleWrite("TCPConnect socket=" & $socket & " - @error=" & @error & @CRLF)
If $socket = -1 Or @error Then
MsgBox(0, 1, $server_ip & " is DOWN on port " & $protocol_port & @CRLF)
Else
MsgBox(0, 1, $server_ip & " is UP on port " & $protocol_port & @CRLF)
EndIf
TCPShutdown()