初学J2ME时,看过的好文章(五)

J2ME游戏开发实例讲解 文章来源:J2ME开发网一、序言  昨天在网上闲逛,发现一篇讲解用delphi实现华容道游戏的文章,颇受启发.于是,产生了将华容道游戏移植到手机中去的冲动.现在手机游戏琳琅满目,不一而足,华容道的实现版本也很多.正巧不久前笔者对J2ME下了一番功夫,正想借这个机会小试牛刀。选用J2ME的原因还有一个就是目前Java开发大行其到,无线增殖业务迅猛发展,J2ME的应用日渐活跃起来,也希望我的这篇文章能 阅读详情
 

随着手机编程的发展,现在的手机网络编程已经成为一种基本的手机软件开发技能,虽然相对于PC网络编程来说,手机网络编程比较简单,且绝大部分都是进行客户端网络编程,但是在实际使用中还是存在一系列的问题。下面的说明部分适用于各种手机开发技术,代码部分以J2ME技术为基础进行说明。

手机网络编程的基本架构是监听器(Listener)模式,其基本的结构包含3个部分:

界面类(或逻辑类)

public DemoCanvas extends Canvas implements HttpListener{

           public void paint(Graphics g){

                    …..

     }

           /**监听器回调方法*/

           public void doResponse(byte[] b){

           }

}

监听器接口

public interface HttpListener{

           public void doResponse(byte[] b);

}

网络线程

public class HttpThread extends Thread{

           private String url = “127.0.0.1/test/1.jsp”;

           private byte[] b;

           private HttpListener listener;

           public HttpThread(byte[] b,HttpListener listener){

                    this.b = b;

                    this.listener = listener;

                    start();

}

public void run(){

         //联网代码

         //调用监听器方法处理反馈

         listener.doResponse(b);

}

}

使用这种基本结构最大的优势就是将网络线程类独立处理,只负责数据传输,而发送的数据生成以及反馈的数据处理,都通过监听器传递出去。则联网时,只需要将对应的类实现监听器,则需要联网时书写的代码是:

                            new HttpThread(b,this);

这样就通过HttpThread类实现网络连接,而将接收到的数据又通过this监听器交给当前界面类进行处理,这样就可以方便的进行数据处理了。当然,也可以比照doResponse方法实现类似的doError方法进行错误处理了。

接入点处理

无论你使用何种手机开发技术,进行网络编程时都不能回避接入点的处理。

A)下面我们先来看一下各个运营商的接入点:

a)中国移动(ChinaMobile)

1)CMNET:直接连接,适用于各种网络方式,如socket、http等

如http连接的连接代码为:

           HttpConnection hc = (HttpConnection)Connector.open(“http://127.0.0.1/test/1.jsp”);

2)CMWAP:代理连接,仅适用于http方式,说白了就是一个http代理服务器。

  代理服务器地址:10.0.0.172

  端口:80

  如http连接的连接代码为:

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

  hc.setRequestProperty("X-Online-Host", “127.0.0.1”);

注意:CMWAP无法使用模拟器或本机测试,必须通过手机真机测试。

b)中国联通(ChinaUnicom)

  1)CUNET,同CMNET

  2)CUWAP,同CMWAP

c)中国电信(ChinaTelecom)

  1)CTNET,同CMNET

  2)CTWAP 代理服务器地址:10.0.0.200   端口:80

我的困惑是为啥CTWAP还和CMWAP、CUWAP使用的代理服务器地址不一样,很郁闷!高人解释解释。

 B)接入点处理:

对于开发者来说,既然手机划分了接入点,而且不同用户默认的接入点不一样,智能机用户一般还可以选择接入点,所以在进行网络编程时就必须要处理了,下面谈一下处理的方式:

用户设置:

这种处理方式就是在软件中提供一个选项,让用户可以设置网络方式。一般默认是CMNET,如果用户连接不上,则可以在设置界面中设置为CMWAP方式。

自动适应:

这种处理方式是软件在启动时自动识别接入点,识别的原理就是连接一下,如果连接不上就认为不是这种,而换一种方式。例如默认采用CMNET方式连接,如果连接不上则认为是CMWAP。还有一种方式是在第一次启动网络连接时,同时使用CMWAP和CMNET两种方式联网,那个可以连上就认为是哪种。

Http or Socket

Http方式不支持长连接,好处是通用,且可以使用各种接入点。

Socket方式是支持长连接,但是只能使用CMNET之类的接入点。

所以我的建议是如果你的软件需要通用一点的话还是使用Http吧,慢点就慢点吧!

计费页面处理

移动为了防止用户误操作而产生流量,在一些情况下在联网时会出现一个资费提示的wml界面,这个界面在软件联网时也会出现。由于计费页面的数据格式和软件的数据格式不一致,所以在联网时必须处理计费页面,处理的方式就是如果发现是计费页面则抛弃掉重新连接一次。而判断计费页面的方式一般是使用响应头数据content-type来进行判断,所以我的处理方式时,自己的服务器设定成一种特定的content-type,例如aaa,每次读取反馈中的content-type,如果不是aaa的话就是计费页面了,重新连接一次即可。例如代码:

           String s = hc.getHeaderField("content-Type");

           if (s.equals("aaa"))) {

     } else {

         hc = (HttpConnection) Connector.open("http://" + url);

                ……

     }

网络超时处理

网络连接自然会有超时,如果一直停留在等待页面则会出现卡死的情况,所以一般都需要进行网络超时的处理。如果你使用的网络技术自身支持超时,那么就恭喜你,这些就可以交给系统去做了,你只需要设置一个超时时间即可了。如果不支持,自己处理起来也不难。处理的方法是:一般你的程序中都会有一个线程(如果实在没有则只能新创建一个了),当开始联网时,使用这个线程进行即时,如果时间达到超时时间,例如30秒,则“停止”联网线程。

但是一般联网线程都是无法停止的,所以我们可以采用一种变通的方式,就是如果超时则丢弃联网的数据反馈。示例代码为:

public class HttpThread extends Thread{

           public boolean isAbandon;

public void run(){

         //联网代码

         //调用监听器方法处理反馈

         if(!isAbandon){

                  listener.doResponse(b);

}

}

}

这样,如果超时则只需要设置:

           http.isAbandon = true;

其中http是联网线程对象。

联网中断处理

在联网等待界面中,一般会设置一个“取消”按钮,可以运行用户在联网时取消该连接,处理的方式和5、网络超时处理的原理一样,只是一般还会涉及到界面的切换等。

XML

很多人可以会遇到传输的数据以xml的格式进行传输,在当前的2G网络下还是不建议这么做,还是自己设计一套紧凑的数据格式,无论是在数据量还是传输速度上都要好一些。

J2ME平台下的走迷宫小游戏开发实战 J2ME(Java 2 Platform, Micro Edition)是为移动设备和嵌入式设备特别设计的一个Java平台版本。它的设计目标是让Java应用可以在有限的硬件资源下运行,这使得J2ME成为了早期智能手机和功能手机游戏开发的重要平台。在本章中,我们将首先对J2ME平台进行整体介绍,包括它的架构、核心组件以及它与Java其他版本的关系。随后,我们会探讨J2ME在游戏开发领域的应用,以及它如何适应移动设备的特定需求。## 1.1 J2ME架构概览。 阅读详情

相关推荐

J2ME平台下的手机游戏开发实战:大富翁游戏源代码解析

J2ME(Java 2 Platform, Micro Edition)是为移动设备设计的Java平台版本。它允许开发者创建适用于各种手机和其他嵌入式设备的应用程序,特别是通过无线连接访问网络信息的应用程序。J2ME(Java 2 Platform, Micro Edition)为移动设备提供了一套GUI组件,允许开发者创建图形化的用户界面。在本节中,我们将介绍J2ME中GUI组件的分类,以及设计原则和用户体验的重要性。Canvas类是J2ME中用于自定义绘图的核心类。它允许开发者覆盖。

weixin_33431149的博客 1046

手机网络编程杂谈

手机网络编程的一些常见问题以及处理,使用J2ME技术描述

爪哇米工作室陈跃峰的移动开发博客 1万+

ctwap和ctnet区别和适用范围介绍

最近用电信的手机,发现有ctwap和ctnet切换,有时候确实某个有一个不能上网的,比较郁闷,从网上找了一些相关资料,方便需要的朋友

CTWAP和CTNET的区别

 CTWAP和CTNET的区别  (1) 通俗点说,WAP可以理解为内网,NET则是公网。CTWAP是中国电信自己门户业务的接入渠道,用于连接电信专门做的私网,可以查看一些信息,但与互联网是隔离的。原本是用于区分不同的资费政策。CTWAP和CTNET类似对应于移动的CMWAP和CMNET。  (2) 使用CTWAP连接网络,分配的是WAP内网地址,访问公网只能通过WAP网关,且W

viviancheng666的专栏 8416

DOSBOX 0.74模拟器安装Windows 95

DosBox本身带有5.0版的DOS系统,启动后虚拟一个Z盘存放有Dosbox特有的外部指令,如config.com、imgmount.com等,经测试,可以顺利安装各版本的windows 3.1系统,但是不能安装win95,需要用原版的dos镜像启动才能安装。1. 获取启动盘镜像文件 下载Win95启动软盘镜像文件,名为boot.img,放到DosBox 0.74的目录下。2. 制作硬盘镜像文件

xjnzhidao的博客 9309

华为2021年天线工程师笔试题目回忆总结(持续更新)

1. 判定长线和短线 所谓长线是指传输线的几何长度和线上传输电磁波的波长的比值(即电长度)大于或接近于1。反之称为短线。是相对于波长而言的。 1000m的传输线,对于频率为50hz(即波长为6000km)的交流电来说,仍远小于波长,应视为短线。长线和短线的区别还在于:长线为分布参数电路,而短线是集总参数电路。 2. 判定传输线的容性和感性 传输线上的输入阻抗具有以下特点: 1/4波长变换性:感性负载与容性负载变换,开路与短路变换; 1/2波长重复性:相距1/2波长的整数倍的两个点输入阻抗都相等。1/4开路传

ludashi3的博客 9530

Android 网络编程入门到实战:HttpURLConnection、JSON 处理、OkHttp 与 Retrofit2

HttpURLConnection、JSON 处理、OkHttp 与 Retrofit2

OuO-1 的博客 1153

STM32 移植LwIP 实现网线插拔自动恢复

STM32 移植LwIP 之后,能正常联网通讯,但是发现2个问题, 1、上电初始化前,未插入网线,之后就无法获取到IP地址(DHCP) 2、正常通讯过程中,拔掉网线,然后插回去,不知道如何复位 先看一下LWIP初始化代码 /** * LwIP initialization function */ int MX_LWIP_Init() { /* Initilialize the LwIP stack with RTOS */ tcpip_init( NULL, NULL );

tiantangmoke的博客 8073

移动 电信 联通 APN cmwap cmnet ctwap ctnet 3gwap uniwap 3gnet uninet

为什么80%的码农都做不了架构师?>>> ...

weixin_33726318的博客 2935

超级详细!!!新手使用AutoDL跑深度学习(MixVPR项目)的学习记录

新手第一次在AutoDL上跑深度学习的实验,遇到一些问题,简单记录一下。如果大家发现问题,欢迎和我讨论。

weixin_45152283的博客 5万+

Bochs源码分析 - 4: 使用ida来调试bochs

前言 bochs内部提供了一个调试器,但是这个命令行调试器相当难用,想找一个gui的debugger。第一次是在百度百科的bochs词条中介绍的peter-bochs-debugger调试器(java编写),但是后来发现ida也有一个bochs调试器,因为对ida比较熟悉,就选用此作为bochs调试器。 在配置过程中参考博客 https://blog.youkuaiyun.com/cssxn/article/details/90738498 中的配置,但是这是直接发布版本,拿源码编译...

WriteAnything_的博客 2755

j2me学习心得

真正开始学习J2ME应该算是从暑假7月份开始。到现在屈指算来也不过是三个月的时间。现在我把中间的一些学习经历写出来,和大家一起分享学习j2me的一些经验和感悟。   在学习J2ME之前,一些认识和不认识的朋友不止一次地说J2ME是JAVA里最难的一块。因为你的代码是运行在有限的资源中,必须尽最大可能地被优化,所以你必须具有很高的编程素养。不过我还是要坚持学习J2ME,也许是出于我对手机游戏软件这一

hydrogen2005的专栏 1398

ZW3D 二次开发-制作插件

1.Windows 7 SP1 或 Windows 10 或 Windows 11(推荐 Windows 11)2.Visual studio 2017-2022 (或 C/C++的任何其他集成开发环境)(推荐 Visual studio 2022)3.ZW3D 2023 或以上版本(建议使用与 ZW3D 一致的 API 的版本)4.Qt5.9.7(for Windows)博主学习使用环境的是:Windows 11 Version 24H2 + Visual studio 2022 + Qt5.9.7(fo

fhqiwmc的博客 810

精通J2ME中的Hello World

       初学java的时候一般都写过如下的HelloWorld程序,今天我准备详细讲述一下J2ME中的HelloWorld。无论你是J2ME开发高手还是新手都应该读读这篇文章,我想它会对你有所帮助!      在javax.microedition.midlet包中定义了一个非常重要的类MIDlet,所有J2ME的应用程序都必须扩展这个类,只有这样才可以使得应用管理软件(Applicat

mingjava的专栏 2317

YOLOv11改进策略【Neck】| PRCV 2023,SBA(Selective Boundary Aggregation):特征融合模块,描绘物体轮廓重新校准物体位置,解决边界模糊问题

SBA 模块在医疗图像分割中具有重要作用,其设计出发点是解决图像中物体边界模糊以及融合特征时的冗余和不一致问题。

Limiiiing的博客 1942

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2340

初学J2ME的时,看过的好文章(一)

J2ME程序开发全方位基础讲解汇总(1) J2ME中暂时无法完成的功能      列一些J2ME中暂时无法完成的功能,希望大家能积极补充:   1、在手机中不更改代码实现移植,主要指游戏。   2、动态修改按钮文字。   3、在Canvas上接受中文输入。   4、

冯小卫 842

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JDK、J2EE、J2SE、J2ME的区别

1.JDK 是Javadevelopmenttoolkit,相当于是Java的库函数,是编译,运行java程序的工具包。 J2EE是Java2enterpriseedition是Java的一种企业版用于企业级的应用服务开发 J2SE是Java2standardedition是Java的标准版,用于标准的应用开发 J2ME是Java2MicroEdition是Java的微型版,常用于手机上的...

gaofengyan的博客 1864

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

初学J2ME时,看过的好文章(二)

用惯的J2ME高级UI而还没有接触过低级UI的developer一定不会习惯跟Canvas的初夜!因为他没有Form那么多可以触摸到风情万种,也没有Item的独特风味,有的只是一个只画笔一个画布,一些只有名字的事件响应方法,更奇怪的事情是你不能手动的调用paint()去做你想做的

冯小卫 793

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

J2ME移动开发,菜鸟指南(转)

要进行J2ME的开发,首先必须要建立开发的平台,而在开发的平台选择上,我来介绍3条路。 1:功能比较全的平台JBUILDER; 搭建这个平台,我们必需要的材料有:JBUILDER 7 或 JBUILDER 8 ,BORLAND ...

cuankuangzhong6373的博客 1114

【J2me 2D 游戏开发系列】◣Himi游戏开发启蒙教程◢Java零基础学习J2me游戏开发全过程!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/j2me-2/774.html          ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!Himi从写博客的最早开始就是Android游戏开发相关的,其实那么很多童鞋也知道Himi是做Java-J2me/Kjava出身,所以不少童鞋

李华明Himi 5475

MVC模式在j2me项目中的应用(一)

MVC模式在j2me项目中的应用(一)作者:FavoYang       Email:favoyang@yahoo.com 欢迎交流Keywords:MVC j2me UI模式 内容提要:本文简要的介绍了MVC模式的思想,并分析了MVC模式的利弊,最后结合MIDP平台给出几种常见的MVC模式实践。相信此文对任何一个使用midp平台的商务程序开发者都或多或少的有所帮助。 版权声明:本文同时发表在ww

alikeboy的专栏 3177
上一篇: 初学J2ME时,看过的好文章(四)
下一篇: (一)Android 异步消息处理
coding_or_coded
博客等级 码龄16年 216粉丝 115原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值