手机访问一个公司内部的一个网页,判断手机连接的是公司的网络还是外部的网络,如果是连接的公司网络则直接请求公司服务器,若是外部网络则请求中间服务器进行连接,大佬们这个该怎么实现。
       如果手机连的WIFI怎么判断他是连接的公司的网络,还是家里的网络。

解决方案 »

  1.   

    那就看IP地址吧,一般内网都是192.xxx,或者10.xx,172.xxx
      

  2.   

    一般内网都是192.xxx,或者10.xx,172.xxx
    其他的都是外网
      

  3.   

    直接做不同dns解析不就行了,让网络管理员去整这个,内网的连接这个域名DNS解析到服务器上,外网就按外网的整如果你们直接用ip的话,估计也是类似的,但我就不知道行不行,你可以咨询下
      

  4.   

    for example
    android手机
    WifiManager wifiManager =(WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    int ipAddr = wifiInfo.getIpAddress();
    String ip = (ipAddr & 0xFF) + "." + ((ipAddr>>8) & 0xFF) + "." + ((ipAddr>>16) & 0xFF) + "." + ((ipAddr>>24) & 0xFF); 
    if (ip.matches("^(10|172|192)[.].*")) { //内网
        //call HI 
    } else {//外网
        //call B
    }
    如果是要判断是否在同一局域网内,可以不用判断内网外网,判断ip和目标服务器的ip的前三段是否相同
    比如手机ip是xxx.yyy.zzz.aaa,HI是xxx.yyy.zzz.bbb,前三段相同,所以是同一个局域网
      

  5.   

    严格说内网、外网没有本质区别,就好比本地人、外地人一样。必须先定义什么是内网、什么是外网,然后再来处理类似的问题。
    就好比 Internet 和 Intranet 的区别。内网中可以使用外网地址,只要不被路由出去。所以单凭 IP 地址是不精确的。
      

  6.   


    ip不一定精确,但在一定程度上还是可以保证准确率的
    10,172,192是专门保留的IP,外网是永远不会出现这样的IP的
    https://baike.baidu.com/item/内网ip/8881186我很好奇LS上的【内网中可以使用外网地址】,你的路由器是如何设置内网的,我的认识里路由器的IP都是内网IP段,怎么才能设成外网IP段的?(路由器的出口IP不算,这个IP可能是外网IP,跟内网无关)
      

  7.   


    ip不一定精确,但在一定程度上还是可以保证准确率的
    10,172,192是专门保留的IP,外网是永远不会出现这样的IP的
    https://baike.baidu.com/item/内网ip/8881186我很好奇LS上的【内网中可以使用外网地址】,你的路由器是如何设置内网的,我的认识里路由器的IP都是内网IP段,怎么才能设成外网IP段的?(路由器的出口IP不算,这个IP可能是外网IP,跟内网无关)大企业的网络设置中,可以出现诸如 201、202 开头公网地址,只要不路由出到互联网,内网完全可以使用所有 IP 地址而不限172、192等地址,完全可以将互联网看做是地球上一个巨大的内网。当然如果仅限规范,使用 10、127、172、192 开头的地址,是可以当做内网的。
      

  8.   


    我觉得这种不按规则出牌有点属于钻牛角尖(就像你说的容易造成网络不正常),至于什么配置百度服务器的,我觉得跟IP没什么关系,有域名解析就可以做到了
    对于一个手机的wifi来说,我觉得不按规则出牌的做法几率可以忽略,除非做一些特殊的测试
      

  9.   

    手机上ping下公司内网服务器(ip形式)看能不能通…… 或者请求一个特定url看能不能得到正确响应。你要关心的不是判断是否连接的公司网络,而是能否得到响应。对比手机ip和服务器ip没有意义