具体问题如下:
公司的软件需要改进一个功能,就是验证用户许可的,原本的实现的通过ping一下百度的网址,看是否ping得通来实现判断当前环境是否联网,联网则进行在线验证,离线则进行离线的处理,但是这做法其实并不稳定,比如不少公司都有内网外网之分的,像我现在的公司,在内网ping得通百度,但是百度是访问不了的,内网不允许访问https……而之前的设计会导致的一个结果就是用户在自己公司的内网上ping得通,进行在线验证,但是实际上的访问又是受限的,这样导致了在线验证的执行出错,但是离线的处理又没有应用到,该如何设计这个联网验证会好一些呢?
目前尝试了ping和GetInternetConnectedState两种处理方式,都失败了,不知道该如何找到思路。
不能设置一个心跳包么,向自己的后台服务定期进行请求,如果一直在线,则更新最新的时间,并严重为在线;如果超时或者其他原因则导致会话过期,认为离线。
问题的关键是我不知道怎么判断出ping得通却访问不了T_T,像我自己的公司内网是限制了https,所以我ping百度没问题可是却是打不开的
直接尝试连接在线验证服务器
就是我想请问的是这一步如何进行好呢,后台打开一个网页?但是这样的体验是非常不好的,我不知道除了ping我自己的服务器还能有什么办法T_T
@BiggodXY: 我不清楚你们的在线验证方式,如果是能打开百度网页就算连接到网络的话,你可以只读取百度首页的源代码判断下就行,就是http协议中的get,嫌慢可以用http协议的head方法
@iVechan: 嗯嗯,我试试看这个思路