`

CMNET和CMWAP GPRS 连接

 
阅读更多
1。CNNET,这个就不用怎么样介绍了,跟电脑上Internet没什么区别。
直接用这个这样的代码就Ok了

java 代码



try { 
              http = (HttpConnection) Connector.open(url); 
         } catch (IOException e) { 
           
             e.printStackTrace(); 




2。CNWAP,这个我的实践结果根网上的很多介绍不同。看下面这段文字。下面摘自。在J2ME中使用CNWAP接入点联网

都是中国移动搞出来的事情。

所以对于特定的一些机型,普通的直接联网方式会出现连不上网络,这是因为你的手机设备不支持CNNET的联网方式。也许你会发现不经过修改,直接连接的方式也可以在一些cnwap的设备上(只支持cnwap的多为低端机)运行,这个是因为设备上应中国一定的要求,在系统底层进行了转换,如果没有转换的话,就必须你自己手动在代码里面显式的来转换了。



这里我只打算给出一些示意代码,用来辅助说明解决问题的方法



假设你原来要请求的页面是:htpp://www.testwap.com/test/try.jsp

那么你会用这句话连接

HttpConnection httpConnection = (HttpConnection)Connector.open(“http://www.testwap.com/test/try.jsp”);



但是为了转成CNWAP的联网形式 你必须这么写

HttpConnection httpConnection = (HttpConnection)Connector.open(“http://10.0.0.172:80/test/try.jsp”);

接着再写

httpConnection.setRequestProperty("X-Online-Hostwww.testwap.com");
httpConnection.setRequestProperty("Accept","*/*");

这样就ok了



不过这个方法在模拟器上没办法测试,因为模拟器移动网关不让你进啊,所以写代码的时候用cnnet的正式发布的时候改成cnwap的。很麻烦
代码是
http =(HttpConnection)Connector.open("http://10.0.0.172:80/"+url,Connector.READ,true); 
c.setRequestProperty("X-Online-Host",ServerName); 
c.setRequestProperty("Accept", "*/*"); 

上面的代码CNNET我试过,因为我那个足球项目需要采用Scoket,确实是只有CNNet能打开Socket。
第二种,我却意外发现,我开发WapExporer进行测试的时候,我没有采用代理,也可以获取连接。
分析有以下几种可能。
1.移动那边可能对于CNNET来说,几乎是对所有的协议进行开放。比如(Socket,Http)跟所有端口。
2.对于CNWAP,我估计只开放http协议以及80端口,其他的都封闭,也就是CNWAP只能访问http协议。
   由于我测试的IP地址进行测试,所以它可以直接找到。对于非IP地址我没测试果。也许CNWAP不能解释域名也说不定,这点我就不清楚了。
例子:

import java.io.IOException;

import java.io.InputStream;

import javax.microedition.io.Connector;

import javax.microedition.io.HttpConnection;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.lcdui.Form;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.StringItem;

import javax.microedition.midlet.MIDlet;

/**

* HttpDemo

*
* @author kf156(亚日)

*
*/

public class HttpTest extends MIDlet implements CommandListener, Runnable {

public static final byte WAIT = 0;// 等待

public static final byte CONNECT = 1;// 连接中

public static final byte SUCCESS = 2;// 成功

public static final byte FAIL = 3;// 失败

int state;// 当前状态

Display display = Display.getDisplay(this);

Form form = new Form("HttpTest");

boolean cmnet = true;// 接入点为cmnet还是cmwap

StringBuffer sb = new StringBuffer("当前接入方式为:CMNET\n");

StringItem si = new StringItem(null, sb.toString());

Command connect = new Command("联网", Command.OK, 1);

Command change = new Command("改变接入点方式", Command.OK, 2);

Command exit = new Command("退出", Command.EXIT, 1);

HttpConnection http;

String host = "wiki.huihoo.com";

String path = "/images/9/9c/Java.gif";

public HttpTest() {

  state = WAIT;// 等待状态

  form.append(si);

  form.addCommand(connect);

  form.addCommand(change);

  form.addCommand(exit);

  form.setCommandListener(this);

}

protected void destroyApp(boolean b) {

}

protected void pauseApp() {

}

protected void startApp() {

  display.setCurrent(form);

}

public void commandAction(Command c, Displayable d) {

  if (c == change) {// 改变接入点

   if (isConnect())

    return;

   cmnet = !cmnet;

   form.deleteAll();

   sb.delete(0, sb.length());

   addStr("当前接入方式为:" + (cmnet ? "CMNET" : "CMWAP"));

   form.append(si);

  } else if (c == connect) {// 联网

   if (isConnect())

    return;

   new Thread(this).start();

  } else if (c == exit) {// 退出

   destroyApp(true);

   notifyDestroyed();

  }

}

public void run() {

  form.deleteAll();

  sb.delete(0, sb.length());

  addStr("当前接入方式为:" + (cmnet ? "CMNET" : "CMWAP"));

  form.append(si);

  state = CONNECT;

  addStr("网络连接中...");

  InputStream is = null;

  try {

   String url = null;

   url = cmnet ? ("http://" + host + path)

     : ("http://10.0.0.172:80" + path);

   http = (HttpConnection) Connector.open(url, Connector.READ_WRITE,

     true);

   if (!cmnet)

    http.setRequestProperty("X-Online-Host", host);

   http.setRequestMethod(HttpConnection.GET);

   String contentType = http.getHeaderField("Content-Type");

   System.out.println(contentType);

   addStr(contentType);

   if (contentType != null

     && contentType.indexOf("text/vnd.wap.wml") != -1) {// 过滤移动资费页面

    addStr("移动资费页面,过滤!");

    http.close();

    http = null;

    http = (HttpConnection) Connector.open(url,

      Connector.READ_WRITE, true);

    if (!cmnet)

     http.setRequestProperty("X-Online-Host", host);

    http.setRequestMethod(HttpConnection.GET);

    contentType = http.getHeaderField("Content-Type");

   }

   addStr("Content-Type=" + contentType);

   int code = http.getResponseCode();

   addStr("HTTP Code :" + code);

   if (code == 200) {

    addStr("网络联网成功,接收数据...");

    is = http.openInputStream();

    Image image = Image.createImage(is);

    addStr("数据接收完毕,显示图片");

    form.append(image);

    // 普通字节数据接收

    // byte[] b = new byte[1024];

    // int len = 0;

    // ByteArrayOutputStream baos = new ByteArrayOutputStream();

    // DataOutputStream dos = new DataOutputStream(baos);

    // while ((len = is.read(b)) != -1) {

    // dos.write(b, 0, len);

    // }

    // dos.close();

    // dos = null;

    // is.close();

    // is = null;

    state = SUCCESS;

    return;

   } else {

    addStr("访问页面失败");

   }

  } catch (IOException e) {

   addStr("联网发生异常:" + e.toString());

   e.printStackTrace();

  } catch (Exception e) {

   addStr("发生异常:" + e.toString());

   e.printStackTrace();

  } finally {

   if (is != null) {

    try {

     is.close();

    } catch (IOException e) {

     e.printStackTrace();

    }

    is = null;

   }

   if (http != null)

    try {

     http.close();

    } catch (IOException e) {

     e.printStackTrace();

    }

   http = null;

  }

  state = FAIL;

}

/**

  * 判断是否正在连接

  *
  * @return

  */

private boolean isConnect() {

  if (state == CONNECT) {

   addStr("网络连接中,请稍候...");

   return true;

  }

  return false;

}

/**

  * 添加文字

  *
  * @param str

  *            要添加的文字

  */

private void addStr(String str) {

  sb.append(str + "\n");

  si.setText(sb.toString());

}

}
分享到:
评论

相关推荐

    CMWAP和CMNET 的主要区别与适用范围

    CMWAP 和 CMNET 是中国移动人为划分的两个 GPRS 接入方式,CMWAP 主要是为了手机用户上网,而 CMNET 则主要是为 PC、笔记本电脑、PDA 等利用 GPRS 上网服务。CMWAP 的限制主要表现在只能访问 GPRS 网络内的 IP,无法...

    GPRS数据传输的控制(CMWAP和CMNET)[参考].pdf

    在GPRS数据传输中,有两种主要的接入点:CMNET和CMWAP,它们各自有不同的应用场景和限制。 CMNET,全称China Mobile NET,是一种开放的、无限制的接入点,允许用户直接访问互联网。使用CMNET,设备可以通过TCP/IP...

    剖析cmwap和cmnet接入点区别和应用

    cmwap和cmnet是中国移动提供的两种GPRS接入点。cmwap是一种基于内网的接入点,使用A类地址(例如10.x.x.x),只能访问中国移动的WAP网络,而cmnet则是一种基于互联网的接入点,使用C类地址(例如202.xxx.x.x或61.x.x...

    j2me自动连接网络,可以是cmwap或者cmnet

    在这个场景中,我们关注的是J2ME如何实现自动连接到互联网,无论是通过CMWAP还是CMNET这两种常见的GPRS(General Packet Radio Service)接入点。 CMWAP和CMNET是中国移动提供的两种不同的网络接入方式。CMWAP主要...

    用C#写的 GPRS 连接管理程序

    C#拨号代码,先拨CMWAP,再拨CMNET,也不会弹出正在拨号的对话框。 调用方法非常简单: Record1("在上传之前提前拨号:ConnectManager"); Connection.ConnectManager cnnMan = null; try { cnnMan = new ...

    电脑用手机GPRS连接上网的教程

    ### 电脑用手机GPRS连接上网的教程 在早期移动通信技术中,GPRS(General Packet Radio Service,通用分组无线服务)作为一种重要的数据传输方式,被广泛应用于手机与电脑之间的网络共享。本文将详细介绍如何利用...

    win7通过蓝牙手机GPRS连接到Internet

    - 通过手机GPRS连接Internet时,要注意使用的接入点,CMWAP通常是包月服务,而CMNET则按流量计费,费用较高。 8. **手机要求**: - 手机需支持GPRS服务,并已开通相应套餐。 - 手机需与电脑通过数据线、蓝牙或...

    WAP、WIFI、CMWAP、CMNET上网方式的区别与联系.docx

    CMWAP和CMNET都是中国移动提供的GPRS接入点。CMWAP是专门为手机WAP上网设计的,通常用于浏览WAP网站、接收彩信等,其数据流量经过中国移动的WAP网关,可能受到一些限制,如速度较慢,但费用相对较低。CMNET则是一种...

    PPC上好用的GPRS开关(控制GPRS流量)

    综上所述,本文介绍了在PPC设备上控制GPRS连接的重要性,特别是对于CMNET和CMWAP这两种接入点的管理,以及如何利用这样的GPRS开关工具在使用Wi-Fi时避免不必要的GPRS流量消耗。这样的软件对于那些需要精细控制数据...

    cmwap转cmnet

    早期用GPRS写的程序,C2C.exe可以实现劲舞团,魔兽世界等TCP协议的程序通过cmwap游戏。cmwap.exe可以使qq通过cmwap上网时不会掉线。根据地方不同,cmwap可能会有不同情况,有的地方限制严格,cmwap.exe不一定有用。...

    CDS 3.0软件的GPRS CQT和DT测试方法.doc

    - **电脑拨号设置**:电脑需要设置调制解调器,创建并配置CMNET和CMWAP拨号连接,以便进行GPRS连接。 在进行CQT和DT测试时,必须严格按照《2005年第三方GPRS业务测试规范》进行,确保测试的准确性和公正性。测试...

    GPRS拨号访问网络

    在本文中,我们将深入探讨如何利用SIM300模块通过GPRS拨号来实现计算机访问IP服务器,并讨论CMNET和CMWAP这两种常见的GPRS接入方式。 SIM300模块是一款小巧、经济且功能强大的GSM/GPRS模块,广泛应用于物联网和移动...

    mobileGPRS

    Mobile平台的GPRS连接实例,包括CMNET和CMWAP。

    设置windowsPPC上网归类.pdf

    Windows PPC(Pocket PC)设备的网络设置主要涉及到GPRS、CMNET和CMWAP的区别与配置。GPRS(General Packet Radio Service)是一种2.5G网络技术,提供无线数据服务,理论最高速度可达115Kbps。中国移动将GPRS服务...

    android实用GPRS连接归类.pdf

    APN是用户通过手机接入网络时必须配置的参数,它定义了手机通过何种方式访问网络,通常分为CMWAP(主要用于WAP浏览)和CMNET(用于普通互联网访问)两类。 在编写需要网络连接的应用程序时,例如发送电子邮件的应用...

    WAP、WIFI、CMWAP、CMNET上网方式的区别与联系.pdf

    - CMWAP和CMNET都是中国移动提供的GPRS接入方式,CMWAP主要用于手机WAP上网,而CMNET则为PC、笔记本电脑等提供全互联网访问服务。 - CMWAP在功能上有所限制,比如速度较慢,且可能需要通过移动的网关进行HTTP代理...

    AndroidWIFI,CMWAP,CMNET的自动判断访问.pdf

    CMWAP和CMNET是中国移动提供的两种GPRS/EDGE网络接入方式。CMWAP通常用于通过手机浏览器访问WAP网站,它需要通过代理服务器,并且可能有特定的网络限制。而CMNET则提供更全面的互联网访问,可以看作是一种直接的...

    Mac使用技巧之苹果Macbook笔记本电脑通过手机Gprs无线上网方法

    在中国移动的网络中,有两种 GPRS 接入方式:CMWAP 和 CMNET。CMWAP 是为手机、笔记本电脑、PDA 等设备提供的 GPRS 上网服务,而 CMNET 则拥有完全的 Internet 访问权。 CMWAP 和 CMNET 的主要区别在于它们的实现...

    AT指令控制模块gprs上网sim300、SIM508/548

    2. **SIM卡支持**:不同的SIM卡可能支持不同的网络模式和服务,例如CMNET或CMWAP,使用前需确认SIM卡是否支持所需的网络模式。 3. **状态检查**:经常检查模块的状态,例如使用`AT+CGACT?`来查询PDP上下文的状态,以...

Global site tag (gtag.js) - Google Analytics