`
luliangok
  • 浏览: 783394 次
文章分类
社区版块
存档分类
最新评论

CMNET和CMWAP网络连接

 
阅读更多

作者:tangl_99 文章来源:http://blog.csdn.net/tangl_99

J2me上的GPRS网络接入点有两个,一个就是CMNET,一个就是CMWAP。一般移动梦网,百宝箱就是挂在CMWAP上的。

CMNET

CMNET就是一般的互联网的网络接入点。我们一般在SUN那里看到的J2ME实例代码都是基于CMNET接入点的网络下载。一般来说,CMNET可以连接所有的网络站点。下面就是我在开发仙剑的CMNET的下载资源包的代码片断。

/***************************************************************************

* 下载网络文件

* @param url String 要下载的文件的地址URL

* @return byte[] 如果下载成功,返回文件的字节缓冲;

* 如果下载失败,返回null

*/

public byte[] download_CMNET(String url) {

ContentConnection c;

InputStream is = null;

byte[] data = null;

try {

c= (ContentConnection)Connector.open("http://"+ServerName+"/"+url,Connector.READ,true);

is = c.openInputStream();

int dataLength = (int) c.getLength();

if (dataLength == -1) {

ByteArrayOutputStream bStrm = new ByteArrayOutputStream();

int ch;

while ( (ch = is.read()) != -1)

bStrm.write(ch);

data = bStrm.toByteArray();

bStrm.close();

}

else {

data = new byte[dataLength];

Data_Read_Buf(is,data,0,dataLength);

}

is.close();

c.close();

}catch (Exception e) {

data = null;

}

c= null;

return data;

}

代码很普通,不过需要注意的有以下两点。

1. getLength()并不是一定都有效,比如我发现在Nokia 40的手机上这个函数有效,但是在Nokia 60的手机上,这个函数通常都无效。所以我们通常都必须要有另外一个下载方式,既是从while循环不断从输入流中一个一个读byte,如果读出为-1,则表示输入流数据读完。

2. Connector.open最后一个参数是表示是否允许timeout,通常我们都得设置true,因为GPRS网路经常中断,那么必须有个timeout来退出连接。依照我的经验,一般如果能够执行完c.openInputStream()后,就表明连接上了,只要连接上后,数据的下载是比较快的(也就是说网络连接是最慢的)。

CMWAP

MOTO的手机通常都是默认接入点就是CMWAP。在手机上的“网页“->”网页设定中可以设置默认的接入点。一般中国大陆的出产的MOTO手机都是设置的移动梦网”的网络接入点,起始就是CMWAP接入点。而MOTO最可恶的一点就是一旦默认接入点是CMWAP,那么所有的J2ME应用程序都无法访问CMNET。而Nokia 40虽然默认的接入点是CMWAP,但是运行中可以自动检查CMNET来访问CMNET

解决MOTO的网络连接有两个办法:

1. 网页“->”网页设定中新建一个网页,然后不需要填写任何参数,设置成默认后,它就可以让手机上J2ME程序通过CMNET访问网络了。

2. 通过移动的代理来实现通过CMWAP访问互联网。下面是仙剑中使用CMWAP下载资源包的代码片断:

/***************************************************************************

* 下载网络文件

* @param url String 要下载的文件的地址URL

* @return byte[] 如果下载成功,返回文件的字节缓冲;

* 如果下载失败,返回null

*/

public byte[] download_CMWAP(String url) {

HttpConnection c;

InputStream is = null;

byte[] data = null;

try {

c= (HttpConnection)Connector.open("http://10.0.0.172:80/"+url,Connector.READ,true);

c.setRequestProperty("X-Online-Host",ServerName);

c.setRequestProperty("Accept", "*/*");

is = c.openInputStream();

int dataLength = (int) c.getLength();

if (dataLength == -1) {

ByteArrayOutputStream bStrm = new ByteArrayOutputStream();

int ch;

while ( (ch = is.read()) != -1)

bStrm.write(ch);

data = bStrm.toByteArray();

bStrm.close();

}

else {

data = new byte[dataLength];

Data_Read_Buf(is,data,0,dataLength);

}

is.close();

c.close();

}catch (Exception e) {

data = null;

}

c= null;

return data;

}

比如我们要下载

http://xxx.xxx.xxx.xxx/BB/AA.dat,那么上面的ServerName= ”xxx.xxx.xxx.xxx”, url = ”BB/AA.dat”

分享到:
评论

相关推荐

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

    J2ME自动获取网络连接的方法,非常智能,而且代码编写很好。

    Iphone4邮箱如何设置

    (iPhone 3gs 和iPod touch除界面略有区别,设置流程一致)温馨提醒:在添加账户之前,如果您的iphone使用移动网络,请确认您的移动网络设置接入点为cmnet,cmwap的连接方式无法正常收发邮件。(两种接入点的方式...

    GPRS拨号访问网络

    本程序实现了SIM300连接电脑访问IP服务器,通过CMNET和CMWAP访问。

    手机BB当MODEM连接电脑上网

    at+cgdcont=1,"ip","cmwap" (目的是使用cmwap包月)不输的话是cmnet。点击“确认”。 ②配置网络拨号连接:我们需要像宽带上网一样建立一个连接,因为GPRS属于拨号方式上网,所以我们要建立一个拨号连接,步骤如下...

    J2ME Http连接例子(DEMO,示例性源代码)

    原作者:亚日。共享出来方便大家。 以下载一张小图片为例子,一个较为简单的HTTP连接的demo。...支持CMNET及CMWAP两种不同的接入方式,以及在CMWAP接入方式下,过滤移动资费页面。在诺基亚 S60 系列真机上测试通过。

    Android编程获取网络连接方式及判断手机卡所属运营商的方法

    本文实例讲述了Android编程获取网络连接方式及判断手机卡所属运营商的方法。分享给大家供大家参考,具体如下: 问题:项目中写的网络模块,感觉有点乱:两套代码 –模拟器、真机,维护起来十分麻烦。 解决办法:代码...

    智能手机 诺基亚S60v2 手机网络自动设置 设置精灵 最强完美版

    手机格机后是不是发现原来的网络设置全部消失了,但自己设置的网络只能上网不能发送...在网络设置中关闭即可,至于那个,cmnet连接,如果你的手机卡支持cmnet就保留着吧,否则还是删掉为好,不要扣话费时后悔不跌 呵呵

    Android开发之获取网络链接状态

    网络开发是Android程序设计一个非常重要的内容,今天本文就和大家一起分享一下Android网络开发的...很多时候我们需要判断用户是否开启网络设置,通常通过ConnectivityManager类来判断网络连接是否存在。 获取网络状态:

    FreeNetBox:这个项目的目标是实现一个基于树莓派使用运营商网络的免流量WIFI路由器

    RespberryPi -- Bluetooth DUN -- Modem (手机也可以) -- cmwap/cmnet 客户端通过wifi连接树莓派上proxy免流量上网 客户端连接树莓派 wifi,树莓碰用iptable限制端口连接, 只可以为socks proxy的端口 客户端修改全局...

    QR码在洗车系统上的应用

    2. 要求手机支持cmwap或cmnet网络功能。在第一次通过网络验证会员卡信息时,手机需要初始化网络环境,所以 会停留几秒钟。初始化网络环境后,网络验证速度会加快。 【按键说明】 1. 拍摄界面: 左软件/右软件/...

    孙行者手机通讯录同步客户端

    打开手机客户端,点击【同步通讯录】即可开始同步,如该过程中提示用户确认读取数据权限和请求网络连接,请按【确定】或【允许】。 [6]检查同步结果 进入soosync.com,输入【账户】和【密码】进行登录。点击导航...

    apn简略介绍,不是很详细,致使原理性的介绍

    即“接入点名称”,是您在通过手机上网时必须配置的一个参数,它决定了您的手机通过哪种接入方式来访问网络,用来标识GPRS的业务种类,目前分为两大类:CMWAP/UNIWAP/3GWAP(通过GPRS访问WAP业务)、CMNET/UNINET/3GNET...

Global site tag (gtag.js) - Google Analytics