1. 程式人生 > >android wap與net的兩種連線方式

android wap與net的兩種連線方式

> android 手機網路接入點名稱及WAP、NET模式的區別-- http://www.cnblogs.com/sunfb/p/3890305.html
  移動/電信/聯通 APN:cmwap cmnet ctwap ctnet 3gwap uniwap 3gnet uninet設定。
 APN(Access Point Name),即“接入點名稱”,用來標識GPRS的業務種類,目前分為兩大類:CMWAP(通過GPRS訪問WAP業務)、CMNET(除了WAP以外的服務目前都用CMNET,比如連線因特網等)。
 中國移動APN: cmwap (2G) cmnet (3G);
 中國電信APN: ctwap (2G) ctnet (3G);
 中國聯通APN: uniwap (2G手機) 3gwap (3G手機) uninet (2G電腦) 3gnet (3G電腦);
一般wap接入和上飛信或者手機登陸運營商營業廳 用 wap (2G),一般上網 使用者會選擇net。

  我們使用Android裝置連線網路時,如果是wap接入點就需要設定代理,而電信和移動聯通的代理並不相同,移動和聯通的wap代理都是10.0.0.172:80,電信的wap代理是10.0.0.200:80,所以進行Android開發時很有必要判斷接入點。
  接入點的型別:
  Net網路:運營商(移動聯通電信)net網路,wifi,usb網路共享;
  Wap網路:移動聯通wap(代理相同:10.0.0.172:80),電信wap(代理:10.0.0.200:80);
  這樣看來就可以抽象出三種網路型別:聯通移動wap,電信wap,其他的都是net型別。

> 判斷連結網路的型別:    
import android.app.Activity;    
import android.content.Context;    
import android.database.Cursor;    
import android.net.ConnectivityManager;    
import android.net.NetworkInfo;    
import android.net.Uri;    
import android.os.Bundle;    
import android.text.TextUtils;    
import android.util.Log;    
public class CheckApnTypeActivity extends Activity {    
  /** Called when the activity is first created. */    
  public static final    String CTWAP = "ctwap";    
  public static final    String CMWAP = "cmwap";    
  public static final    String WAP_3G = "3gwap";    
  public static final    String UNIWAP = "uniwap";    
  public static final    int TYPE_NET_WORK_DISABLED = 0;// 網路不可用    
  public static final    int TYPE_CM_CU_WAP = 4;// 移動聯通wap10.0.0.172    
  public static final    int TYPE_CT_WAP = 5;// 電信wap 10.0.0.200    
  public static final    int TYPE_OTHER_NET = 6;// 電信,移動,聯通,wifi 等net網路    
  public static Uri PREFERRED_APN_URI = Uri    
  .parse("content://telephony/carriers/preferapn");    
  @Override    
  public void onCreate(Bundle savedInstanceState) {    
    super.onCreate(savedInstanceState);    
    setContentView(R.layout.main);    
  
    checkNetworkType(this);    
  }    
  
  /***   
    * 判斷Network具體型別(聯通移動wap,電信wap,其他net)   
    *      
    * */    
  public static int checkNetworkType(Context mContext) {    
    try {    
      final ConnectivityManager connectivityManager = (ConnectivityManager) mContext    
          .getSystemService(Context.CONNECTIVITY_SERVICE);    
      final NetworkInfo mobNetInfoActivity = connectivityManager    
          .getActiveNetworkInfo();    
      if (mobNetInfoActivity == null || !mobNetInfoActivity.isAvailable()) {    
        // 注意一:    
        // NetworkInfo 為空或者不可以用的時候正常情況應該是當前沒有可用網路,    
        // 但是有些電信機器,仍可以正常聯網,    
        // 所以當成net網路處理依然嘗試連線網路。    
        // (然後在socket中捕捉異常,進行二次判斷與使用者提示)。        
        Log.i("", "=====================>無網路");    
        return TYPE_OTHER_NET;    
      } else {    
        // NetworkInfo不為null開始判斷是網路型別    
        int netType = mobNetInfoActivity.getType();    
        if (netType == ConnectivityManager.TYPE_WIFI) {    
          // wifi net處理    
          Log.i("", "=====================>wifi網路");    
          return TYPE_OTHER_NET;    
        } else if (netType == ConnectivityManager.TYPE_MOBILE) {    
          // 注意二:    
          // 判斷是否電信wap:    
          //不要通過getExtraInfo獲取接入點名稱來判斷型別,    
          // 因為通過目前電信多種機型測試發現接入點名稱大都為#777或者null,    
          // 電信機器wap接入點中要比移動聯通wap接入點多設定一個使用者名稱和密碼,    
          // 所以可以通過這個進行判斷!   
          final Cursor c = mContext.getContentResolver().query(    
              PREFERRED_APN_URI, null, null, null, null);    
          if (c != null) {    
            c.moveToFirst();    
            final String user = c.getString(c    
                .getColumnIndex("user"));    
            if (!TextUtils.isEmpty(user)) {    
              Log.i("",    
                  "=====================>代理:"    
                      + c.getString(c    
                          .getColumnIndex("proxy")));    
              if (user.startsWith(CTWAP)) {    
                Log.i("", "=====================>電信wap網路");    
                return TYPE_CT_WAP;    
              }    
            }    
          }    
          c.close();       
          // 注意三:    
          // 判斷是移動聯通wap:    
          // 其實還有一種方法通過getString(c.getColumnIndex("proxy")獲取代理ip    
          //來判斷接入點,10.0.0.172就是移動聯通wap,10.0.0.200就是電信wap,但在    
          //實際開發中並不是所有機器都能獲取到接入點代理資訊,例如魅族M9 (2.2)等...    
          // 所以採用getExtraInfo獲取接入點名字進行判斷       
          String netMode = mobNetInfoActivity.getExtraInfo();    
          Log.i("", "netMode ================== " + netMode);    
          if (netMode != null) {    
            // 通過apn名稱判斷是否是聯通和移動wap    
            netMode=netMode.toLowerCase();    
            if (netMode.equals(CMWAP) || netMode.equals(WAP_3G)    
                || netMode.equals(UNIWAP)) {    
              Log.i("", "=====================>移動聯通wap網路");    
              return TYPE_CM_CU_WAP;    
            }    
  
          }    
  
        }    
      }    
    } catch (Exception ex) {    
      ex.printStackTrace();    
      return TYPE_OTHER_NET;    
    }      
    return TYPE_OTHER_NET;    
  }    
}  

> WAP和NET的區別
一、什麼是WAP和NET接入:
  我們常用的手機上網都是採用WAP方式接入,此種方式是專為手機接入而命名的。而另一種net接入是我們常說的電腦方式接入,即電腦客戶端接入方式。兩者最大的區別在於net方式費流量,而wap方式非常的省流量!
二、WAP和NET接入點的區別:
  WAP接入點使用WAP閘道器處理你的請求,相當於訪問一個移動型私網,而NET接入點是通過防火牆後直接訪問的公網。之所以WAP方式比NET更省流量,主要是因為WAP的一般頁面訪問用WAP1.x的協議,頁面與協議棧都經過了壓縮處理,而NET則是http訪問,協議棧本身的開銷會大一些。目前運營商正在推進APN融合,很快就不用再區分WAP和NET接入點了。
三、當我們使用手機上網時,聯通接入點3gwap和3gnet這兩者之間有什麼區別呢?
  1.3gwap和3gnet首先這只是一個接入點的名稱並不代表你選的3G就是3G的網路;
  2.手機最初的接入點是wap,移動稱之為:移動夢網;聯通稱之為:百寶箱。後來由於網路的發展手機通過WAP接入並不能開啟很多電腦上的網站,而且上網慢,就用net接入點這個接入點速度快並能覆蓋全國,一般外地出差或玩手機網路遊戲都用net接入點。

相關推薦

android wapnet連線方式

> android 手機網路接入點名稱及WAP、NET模式的區別-- http://www.cnblogs.com/sunfb/p/3890305.html   移動/電信/聯通 APN:cmwap cmnet ctwap ctnet 3gwap uniwap 3gne

Kafka結合Spark-streaming 的連線方式(AWL直連)

kafka結合spark-streaming的用法及說明之前部落格有些,這裡就不贅述了。 這篇文章說下他們結合使用的兩種連線方式。(AWL與直連) 先看一張圖: 這是kafka與streaming結合的基本方式,如圖spark叢集中的 worker節點中 exeutor

JavaOracle的連線方式

第一種方式:通過資料庫本身的JDBC Driver連線到資料庫 Classs.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection("jdbc:

elasticsearch 的連線方式+三客戶端

  所有語言 所有語言可以使用 RESTful API 通過埠 9200 和 Elasticsearch 進行通訊,你可以用你最喜愛的 web 客戶端訪問 Elasticsearch 。事實上,正如你所看到的,你甚至可以使用 curl&n

Android】打電話的實現方式

第一種實現方式:直接給聯絡人打電話 Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:110")); startActivity(intent);

Eclipse匯入git工程(HTTPSSH匯入方式

Eclipse匯入Git工程(HTTP與SSH兩種匯入方式) Eclipse git官方使用說明:http://wiki.eclipse.org/EGit/User_Guide#Eclipse_SSH_Configuration 一、使用HTTP方式匯入git工程

Android中BroadcastReceiver的註冊方式(靜態和動態)詳解

今天我們一起來探討下安卓中BroadcastReceiver元件以及詳細分析下它的兩種註冊方式。 BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統和應用中的廣播。在Android系統中,廣播體現在方方面面,例如當開機完成後系統會

Android 圓形頭像的實現方式

前言 這篇部落格只是為了做一個記錄而已,方便而後查詢,核心程式碼都是直接採用鴻洋部落格裡面的程式碼的。 圓形頭像在實際開發中實際很常見,一般來說,主要有兩種實現方式: 第一種: 使用 Paint 的 Xfermode 實戰 第二種方法: 使用 B

【JavaScript】2.Http中GetPost請求方式的差異

Get和Post在面試中一般都會問到,一般的區別: (1)post更安全(不會作為url的一部分,不會被快取、儲存在伺服器日誌、以及瀏覽器瀏覽記錄中) (2)post傳送的資料更大(get有url長度限制) (3)post能傳送更多的資料型別(get只能傳送ASCII字元)

oracle連線方式的差異記錄

連線oralce資料庫的方式。有兩種: (1)db.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(LOAD_BALANCE=YES)(FAILOV

Oracle連線方式

一、需要安裝Oracle客戶端並配置tnsnames.ora 配置檔案D:\app\User\product\11.2.0\client_1\network\admin\tnsnames.ora string connStr1 = "Data Source=HISDB;Us

android中廣播的啟動方式淺析【自定義Action】

1:註冊廣播:(有兩種方式)      一是動態方式使用Context.registerReceiver()方法來註冊;      二是靜態方式,即在AndroidManifest.xml中通過<receiver> 。 2:傳送廣播:

Android資料庫操作方式介紹: SQLiteORMLite

本文主要介紹關係型資料庫 SQLite 和物件關係對映工具 ORMLite ,兩種方式都可以滿足Android多資料持久化儲存的需求。 1. SQLite 簡介: SQLite是一款Android內建的輕量級的關係型資料庫,它的運算速度非常快,佔用資源少,通常只需要幾

ASP.NET 配置ORACLE資料庫的連線方式

ASP.NET 兩種配置ORACLE資料庫的連線方式 1.使用"connectionStrings"標籤定義 2.使用"appSettings"標籤定義 1.使用"connectionStrings"標籤定義 在ASP.NET中的 W

JFreeChartAJAX+JSON+ECharts處理方式生成熱詞統計可視化圖表

線型 static 後臺 標註 png tip 開源工具 grid 讀取 本篇的思想:對HDFS獲取的數據進行兩種不同的可視化圖表處理方式。第一種JFreeChar可視化處理生成圖片文件查看。第二種AJAX+JSON+ECharts實現可視化圖表,並呈現於瀏覽器上。    

OozieCoordinator調度講解及系統時區配置定時觸發配置方式

-- track eno star es2017 alt coo 之前 res 1:修改本地linux時區 查看時區 - 號代表西 + 號 代表東 北京時間是東八區 設置時區的配置文件所在位置 1 cd /usr/share/zoneinfo/

vue 路由傳參 params query方式的區別

fine 分享 文件 路由 註意 undefine 方法 router 由於   初學vue的時候,不知道如何在方法中跳轉界面並傳參,百度過後,了解到兩種方式,params 與 query。然後,錯誤就這麽來了:    router文件下index.js裏面,是這麽定義路由

java的同步方式, SynchronizedReentrantLock的區別

性能 避免 字節碼 數據 獲取對象 通過 finall 內核 構造函數 java在編寫多線程程序時,為了保證線程安全,需要對數據同步,經常用到兩種同步方式就是Synchronized和重入鎖ReentrantLock。 相似點: 這兩種同步方式有很多相似之

[Vue]實例化Vue時的掛載方式el$mount

class message size obj new () ESS div clas Vue 的$mount()為手動掛載,在項目中可用於延時掛載(例如在掛載之前要進行一些其他操作、判斷等),之後要手動掛載上。new Vue時,el和$mount並沒有本質上的不同。 1

[Linux]PHP-FPMNGINX的通訊方式

rom code pan ESS write 訪問權限 nec ner div 一、通過監聽TCP端口通訊 php-fpm.d/www.conf ; The address on which to accept FastCGI requests. ; Valid synt