fuinei
发表于 2012-3-29 11:18:38
回复 15# calora88
谢谢指导,这种方法实际与telnet效果相同,在我司的环境中即使不能访问指定的站点,但是ping,telnet到80端口还是可以的,因此这种方法适用于一般的环境但不适用于我目前的情况.
auto
发表于 2012-3-29 13:19:55
试试xmlhttp看看返回什么错误
fuinei
发表于 2012-3-29 13:31:36
回复 17# auto
请问xmlhttp指的是哪个函数,第三方UDF吗?
netegg
发表于 2012-3-29 13:41:22
楼主这个问题没说清楚吧,指的是外网还是内网,外网的话直接ping个域名就行了,内网的话,检查四个'端口'
fuinei
发表于 2012-3-29 13:57:36
回复 19# netegg
我的问题是检查外网,公司的PC只要开机是一直连接的,但访问外网则需经代理服务器,代理服务器上有针对不同级别帐号的策略,部分帐号可能被禁止访问大部分网址但ping和telnet到80端口都是可以的.
netegg
发表于 2012-3-29 14:23:59
2003?不太会玩了
fuinei
发表于 2012-3-29 18:25:36
回复 21# netegg
不是的,代理服务器是硬件代理,一般的PC是XP的
502762378
发表于 2012-3-29 18:36:52
和我们公司是一样,你要在代理服务器上下工夫
判断PC,你要先判断登陆的账户不是?除非人手一台电脑
fuinei
发表于 2012-3-29 18:41:39
回复 23# 502762378
看来只有14楼的方法(使用InetGet根据下载的内容)来判断用户能否访问Intenet了
502762378
发表于 2012-3-29 18:47:02
恩判断回执当然可以,虽然笨了点,其实这个问题没有意义,代理服务器有很多功能你自己琢磨呗
pigWoWo
发表于 2012-3-29 18:51:50
标记一下
标记一下
fuinei
发表于 2012-3-30 08:30:48
谢谢各位的回复,此帖先标记为已解决,如有问题方法的可以继续跟贴
calora88
发表于 2012-3-30 10:19:20
不想要暫存檔 剩winhttp了
udf 在
http://winhttp.origo.ethz.ch/download
#include "WinHttp.au3"
Opt("MustDeclareVars", 1)
; Initialize
Global $hOpen = _WinHttpOpen()
If @error Then
MsgBox(48, "Error", "Error initializing the usage of WinHTTP functions.")
Exit 1
EndIf
; Specify what to connect to
Global $hConnect = _WinHttpConnect($hOpen, "www.163.com") ; <- yours here
If @error Then
MsgBox(48, "Error", "Error specifying the initial target server of an HTTP request.")
_WinHttpCloseHandle($hOpen)
Exit 2
EndIf
; Create request
Global $hRequest = _WinHttpOpenRequest($hConnect)
If @error Then
MsgBox(48, "Error", "Error creating an HTTP request handle.")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 3
EndIf
; Send it
_WinHttpSendRequest($hRequest)
If @error Then
MsgBox(48, "Error", "Error sending specified request.")
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 4
EndIf
; Wait for the response
_WinHttpReceiveResponse($hRequest)
If @error Then
MsgBox(48, "Error", "Error waiting for the response from the server.")
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 5
EndIf
; See if there is data to read
Global $sChunk, $sData
If _WinHttpQueryDataAvailable($hRequest) Then
; Read
While 1
$sChunk = _WinHttpReadData($hRequest)
If @error Then ExitLoop
$sData &= $sChunk
WEnd
; ConsoleWrite($sData & @CRLF) ; print to console
MsgBox(0,1,$sData)
Else
MsgBox(48, "Error", "Site is experiencing problems.")
EndIf
; Close handles when they are not needed any more
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
fuinei
发表于 2012-3-30 11:11:10
本帖最后由 fuinei 于 2012-3-30 11:12 编辑
回复 28# calora88
谢谢指导,代码返回访问页面的内容,该方法仍需判断返回内容才能确定当前帐号在PC上能否访问Internet,使用以下代码时遇到不能准确判断结果,不知道是否由于内容太多导致变量$sData无法存放所有的内容导致的呢?#include "WinHttp.au3"
Opt("MustDeclareVars", 1)
; Initialize
Global $hOpen = _WinHttpOpen()
If @error Then
MsgBox(48, "Error", "Error initializing the usage of WinHTTP functions.")
Exit 1
EndIf
; Specify what to connect to
Global $hConnect = _WinHttpConnect($hOpen, "www.baidu.com") ; <- yours here
If @error Then
MsgBox(48, "Error", "Error specifying the initial target server of an HTTP request.")
_WinHttpCloseHandle($hOpen)
Exit 2
EndIf
; Create request
Global $hRequest = _WinHttpOpenRequest($hConnect)
If @error Then
MsgBox(48, "Error", "Error creating an HTTP request handle.")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 3
EndIf
; Send it
_WinHttpSendRequest($hRequest)
If @error Then
MsgBox(48, "Error", "Error sending specified request.")
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 4
EndIf
; Wait for the response
_WinHttpReceiveResponse($hRequest)
If @error Then
MsgBox(48, "Error", "Error waiting for the response from the server.")
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 5
EndIf
; See if there is data to read
Global $sChunk, $sData
If _WinHttpQueryDataAvailable($hRequest) Then
; Read
While 1
$sChunk = _WinHttpReadData($hRequest)
If @error Then ExitLoop
$sData &= $sChunk
WEnd
; ConsoleWrite($sData & @CRLF) ; print to console
;MsgBox(0,1,$sData)
If StringInStr($sData,"Note: Please have your identity authenticated before accessing the Internet。",1) > 0 Then
MsgBox(48,"Error","请登陆代理服务器")
ElseIf StringInStr($sData,"http://192.168.1.254/disable/disable.htm",1) >0 then
MsgBox(48,"Error","当前帐号不允许访问Internet")
Else
MsgBox(0,"Info","当前帐号可以访问Internet")
EndIf
Else
MsgBox(48, "Error", "Site is experiencing problems.")
EndIf
; Close handles when they are not needed any more
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
calora88
发表于 2012-3-30 12:08:49
Local $fid=FileOpen("a.txt", 16)
Local $data=FileRead($fid)
If @error Then MsgBox(0,1,'error')
FileClose($fid)
$fid=FileOpen("b.txt", 16 + 2)
FileWrite($fid, $data)
FileClose($fid)
Exit
用此代碼測試250m的檔案是ok的, 你的網頁不會超過250m吧