判断网络连接状态

2015-03-11 14:24:52 +08:00
 intpbyd
我们学校的校园网是个局域网 需要登录后才能访问外网,采用DrCom网页登录(学校的很多网站不用登录也能上 比如学校官网等)。
未登录状态下浏览器打开任意页面都会被跳转到账号登陆页面。

windows的很多检测网络的API只要插上网线就说连接正常 该如何判断已经连上了外网呢?
1791 次点击
所在节点    C
19 条回复
nomaka
2015-03-11 14:37:54 +08:00
你连个外网地址 能通就说明连上了
FastMem
2015-03-11 16:03:02 +08:00
很简单,由于我只会PHP不给演示代码了。

可以这样,定义一个默认站点,然后用curl去抓取这个站点,判断是否存在指定内容,如果存在返回正常,不存在返回不正常就可以了。
intpbyd
2015-03-11 16:16:52 +08:00
@nomaka 编程来实现 不至于写个浏览器吧
choury
2015-03-11 16:34:22 +08:00
你不会在jlu吧
VYSE
2015-03-11 16:38:15 +08:00
sany217
2015-03-11 17:24:48 +08:00
ICMP ping外网
denghongcai
2015-03-11 17:55:04 +08:00
Win32 API中有InternetGetConnectedState和InternetCheckConnection,配套使用即可
chengr28
2015-03-11 17:55:34 +08:00
https://technet.microsoft.com/en-us/library/ee126135(v=ws.10).aspx
巨硬自己有网络指示器,不过没发现有 API……貌似只能自己去请求,不过 HTTP 应该有 API 吧
wzyuliyang
2015-03-11 17:59:21 +08:00
#!/bin/bash
result=$(curl -s -o /dev/null -w "%{http_code}" http://www.baidu.com)
echo $result
okflag=200
if [ $result -eq 200 ] ; then
echo "Network is ok"
else
echo "Network connection down! Attempting reconnection."

fi
15ir
2015-03-11 18:09:18 +08:00
- - 我写过,其实吧,访问图片链接不就好了,一张是校内网的,访问成功就表示连上内网,一张放在外网,如果图片访问不了就练不了外网呗... 图片内容可以分别写“内网连接成功”,“外网连接成功”。

比较简便且可以实现的。。
gamexg
2015-03-11 19:16:53 +08:00
@15ir 好主意啊。
15ir
2015-03-11 20:12:27 +08:00
@gamexg 用pictureBox的话,属性设置一下,代码都不用敲...
jefby
2015-03-11 20:33:31 +08:00
ping www.baidu.com 查看返回值,如果$?==0,OK;否则没连外网
andy12530
2015-03-11 21:28:52 +08:00
访问apple的一个网址,返回 success,说明通了。

iphone就是这么干的啊,难道你们都不知道么。
Delbert
2015-03-11 22:07:08 +08:00
@jefby /t/168381
我们学校……估计教育网很多地方也这样。
真是大快人心。
withrock
2015-03-12 09:57:21 +08:00
#检查主机是否连通
ping -c 2 -w 4 $host >/dev/null 2>&1
case "$?" in
"0") echo "host is O.K.";;
*) echo "host[$host] is NOT available." && exit 127;;
esac
intpbyd
2015-03-12 10:18:10 +08:00
@denghongcai 没用 始终显示已连通
legendecas
2015-03-12 14:59:12 +08:00
安卓5.0的判断机制是先访问 clients3.google.com/generate_204 这个网址,而这个网址如字面所说,会产生一个 http 204 返回值。204返回值的意思就是空内容。如果当前wifi是需要登录才可以连接,那么当试图访问google的服务器的时候,wifi的验证机制一定会自动跳转到一个登录页面,这个时候http请求的返回值就必然不是204了。就是通过这一机制,便可以区分当前wifi是否需要验证。
intpbyd
2015-03-13 09:52:35 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/176072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX