标题:求助:设置好代理IP后,怎样判断能否连上Internet
只看楼主
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
结帖率:90%
已结贴  问题点数:20 回复次数:7 
求助:设置好代理IP后,怎样判断能否连上Internet
RT,程序已经用InternetSetOption设置好代理IP。但是我应该怎样来判断设置后能否连上Internet ?

程序代码:
Function SetProxy(ProxyIP As String) As Integer
    Dim options As INTERNET_PROXY_INFO
    options.dwAccessType = INTERNET_OPEN_TYPE_PROXY
    options.lpszProxy = ProxyIP
    options.lpszProxyBypass = ""
    SetProxy = InternetSetOption(0, INTERNET_OPTION_PROXY, options, LenB(options))      '返回0或1
End Function


找了好多相关的函数也没有什么头绪!
搜索更多相关主题的帖子: Internet 
2013-12-08 11:48
vbvcr51
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:18
帖 子:364
专家分:1724
注 册:2013-11-3
得分:0 
我的一点思路,ping 一个大点网站,看是否返回数据。比如,搜狐网。ping www.
2013-12-08 14:43
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
得分:0 
以下是引用vbvcr51在2013-12-8 14:43:15的发言:

我的一点思路,ping 一个大点网站,看是否返回数据。比如,搜狐网。ping www.
如何得到返回数据?

无知
2013-12-08 15:26
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
得分:0 
谢谢大家的回复
其实用PING的话我也想过,可以把PING出来的结果保存起来,然后程序自动处理结果。
但是大型些的网站,它们会有防止你多次经常PING的可能,甚至是不允许PING的。
以前我用PING写过相关的程序,开始的时候还好好的,压力测试过后,几乎是显示:100% LOSS。
所以才没有考虑用PING。
但是想用API函数的话,又暂时没有发现合适的
所以才来向大家求助!
2013-12-08 23:14
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
直接打开一个大站好啦,打开一个 网页内容很少的大站,如百度、新浪、搜狐、网易 之类的。
这些大站挂的情况很少。

使用 TCP 直接模拟浏览器的访问就是了。
连接代理服务器。然后发请示代理访问 指定站点。
1、连接超时。网络不通。
2、返回超时。代理不可用。
3、返回结果,不是指定站点的内容。判断网页标题的方法。 代理不可用。
否则,网络就是通的。

授人于鱼,不如授人于渔
早已停用QQ了
2013-12-09 11:30
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
得分:0 
谢谢版主的回复,其实我思路也大概是这样,不过我API不太熟悉,
所以我不知道该用什么函数来实现这些内容比较好


[ 本帖最后由 seafish011 于 2013-12-9 22:45 编辑 ]
2013-12-09 22:43
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:20 
连接,使用 winsock 控件。
使用 TCP 方式。
1、连接 对方主机,80端口。标记状态,开定时器计时。
2、定时器超时,发出超时信息,如果状态是连接。或者连接报错 。那第一条错误。
3、连接成功后,把请求首页的 HTTP 标准代理封包发给服务器。标记状态,开定时器计时。
4、定时器超时,发出超时信息,如果状态是已发送请求。或者连接报错。那么第二条错误。
5、收到返回的内容。先读 HTTP封包头,如果不是 200 标志,第三条错误。
   再读 HTTP 封包内容,找到 标题 的那个标签,解出标题来,与所期望的字符串比较,如果不包含,第三条错误。
6、返回的内容,判断正确,标志代理测试成功。

整个过程,不使用 API ,只使用一个控件。
当然,你要使用API,不使用控件,也行,使用的是 SOCK 部分的API 。这个我没用过。

授人于鱼,不如授人于渔
早已停用QQ了
2013-12-10 11:46
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
得分:0 
以下是引用风吹过b在2013-12-10 11:46:27的发言:

连接,使用 winsock 控件。
使用 TCP 方式。
1、连接 对方主机,80端口。标记状态,开定时器计时。
2、定时器超时,发出超时信息,如果状态是连接。或者连接报错 。那第一条错误。
3、连接成功后,把请求首页的 HTTP 标准代理封包发给服务器。标记状态,开定时器计时。
4、定时器超时,发出超时信息,如果状态是已发送请求。或者连接报错。那么第二条错误。
5、收到返回的内容。先读 HTTP封包头,如果不是 200 标志,第三条错误。
   再读 HTTP 封包内容,找到 标题 的那个标签,解出标题来,与所期望的字符串比较,如果不包含,第三条错误。
6、返回的内容,判断正确,标志代理测试成功。

整个过程,不使用 API ,只使用一个控件。
当然,你要使用API,不使用控件,也行,使用的是 SOCK 部分的API 。这个我没用过。

原来winsock还可以这样用。先结贴,不明再开新贴。谢谢回复!
2013-12-10 21:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-424877-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.137068 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved