浅析J2ME中多线程网络连接编程

引言

J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并 称。J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂 窝电话、可视电话、数字机顶盒和汽车导航系统等等。即J2ME是为消费电子产品 和手持设备量身定制的Java专用版本。

J2ME的出现使开发跨平台的消费类电子产品的应用软件成为可能。Java语言 的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程 序。它提供了基于HTTP的高级Internet协议,使移动电话能以Client/Server方 式直接访问Internet的全部信息,从而使得不同的Client访问不同的资源。

在将来的无线通信时代中,大量的网络应用程序将被开发出来去满足无线移 动通讯的要求,而要充分的发挥无线移动通讯设备的通信能力,J2ME网络编程就 变得尤为重要。那么为了高效地进行网络编程,就要利用Java语言的多线程编程 机制。

J2ME的网络连接框架(GCF)

通用连接框架(Generic Connection Framework,GCF)为资源有限的设备提 供了一个可扩展的、通用的I/O 框架。GCF 是一组在 javax.microedition.io 包中定义的接口。图 1 显示了 GCF 的类层次结构。

图1 GCF 的类层次结构

在 GCF 中共定义了七个接口 ,其中 Connection 是最基本的连接类型。且 同时提供了对数据包和流连接的支持。沿着层次结构向下派生出提供更多功能的 接口。例如, StreamConnection 接口支持输入流和输出流, ContentConnection接口又扩展了 StreamConnection 接口以支持对流的内容类 型、数据长度和编码格式的确定,HttpConnection接口又扩展了 ContentConnection接口以支持对于标准的HTTP请求。如在框架层规定的适用于 手机或双向寻呼机的移动信息设备框架MIDP(Mobile Information Device Profile)在其MIDP 1.0 规范只要求设备支持 HTTP 连接协议,而更新的 MIDP 2.0 规范要求同时支持 HTTP 和 HTTPS,后者提供了对更安全的网络连接的支持 。

网络编程中的多线程

由于目标设备具有内存小,计算能力弱和电池供电等特点,所以如何使应用程 序高效的运行就成为开发中的一个大问题.尤其针对手机等移动信息设备时,无线 通讯的特点又对我们的程序提出了更高的要求.从代码优化的角度,在网络编程中 引入多线程就显得十分重要。

当程序运行的时候,Application Management Software(应用管理软件)首先 初始化一个MIDlet,然后调用它的startApp()方法使得MIDlet进入active状态, 这条程序分支就是主线程,它执行其他的方法后都会返回到这个分支上来继续执 行。然而网络连接是个可能堵塞的操作,意味着它可能长时间都不返回。

在SUN公司的无线开发包WTK中模拟一段网络连接程序运行时,WTK会提示网络 连接工作可能会堵塞用户输入,需要创建另外一个线程去进行联网操作。针对以 上情况,引入多线程的处理机制。

1. 利用Thread类与Runnable接口

编写J2ME网络连接应用程序的时候往往借助Command显示部件,调用其事件处 理函数完成网络的连接工作,代码框架如下:

public void commandAction(Command c, Displayable s) {
  if(c==sendCommand){
requestConnect();//连接方法
  }
  else if(
c==backCommand){
  display.setCurrent(mainForm); }
  else{
destroyApp(false);
notifyDestroyed(); }
}
// 获取一个HTTP的连接
private void requestConnect() {
  String url= URL.URLString
  HttpConnection hpc = null;
  try{
hpc = (HttpConnection)Connector.open(url);
int status = hpc.getResponseCode();
if(status != HttpConnection.HTTP_OK)
  content = "联机失败!";
else
  content = "已联机!";
  }
  catch(IOException e){System.out.println(content);}
  try{
if(hpc != null) hpc.close();
  }
  catch(IOException e2){}}

时间: 2024-08-31 05:44:32

浅析J2ME中多线程网络连接编程的相关文章

J2ME中多线程网络连接编程的分析

编程|多线程|网络 摘 要 介绍并分析了J2ME的通用网络连接框架(GCF),并以此为基础,指出了在J2ME网络连接编程中存在的问题,并提出了通过构建多线程的两种解决方法. 关键词 J2ME GCF多线程 网络连接 引言 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE.J2EE并称.J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话.可视电话.数字机顶盒和汽车导航系统等等.即J2ME是为消费电子产品和手持设备量身定制的

我们在Windows 8系统中无线网络连接的设置方法

第一步.首先单击托盘中的网络图标,在弹出的右侧网络边栏中查看飞行模式是否开启,如果开启则需要关闭它.然后在Wi-Fi中找到私有的无线网络SSID(无线网络广播名称),单击"连接". 第二步.然后,在白色方框中输入该私有无线网络的安全密钥,如果感觉输入错误,可以单击右侧的眼睛图标查看输入的内容,确认无误后单击"下一步". 第三步.如果网络安全密钥输入正确,此时计算机已经能够通过无线网络连接到因特网了,即可开始使用.当然,无线网络连接还有最后一步,是否启用电脑之间的共享

CentOS 7 中查看网络连接的命令

  CentOS 7系统与以前centos6是有一些区别的,那么如何在CentOS 7 中查看网络连接?有需要了解的朋友可以和小编一起来看看吧. 一直用 ifconfig 命令查看 CentOS 中的网络连接,包括 IP 地址.MAC 地址.网络连接状态等.升级到 CentOS 7 之后 ifconfig 就找不到了,原来这个指令已经被废弃,改用 ip 指令.同样的事情也发生在 RHEL 7.Oracle Linux 7.Scientific Linux 7 的 minimal 版本中. 在 C

如何在ghost win7中快速打开网络连接窗口?

  上网的过程中遇到网络相关的问题是很正常的,那么如何解决呢?这个时候,咱们就很有可能会涉及到打开ghost win7 64位旗舰版下载中的网络连接窗口了,但是大家也知道,在ghost win7中要打开网络连接窗口的话,就需要很多繁琐的步骤,例如需要先进入到控制面板界面中,然后依次进入到网络共享中心-网路和Internet窗口,之后,咱们才能找到网络连接,每次这样的操作大家会不会也觉得很麻烦呢?今天,小编就来介绍一个在ghost win7中打开网络连接的简便方法吧!下面,小编将具体的操作步骤分享

win7电脑中的网络连接显示未知状态怎么办?

  可以说,在ghost win7 64位旗舰版下载中,网络连接绝对是一个非常困扰我们的难题,很多时候,网络连接故障会让我们感到十分的头疼,不知道原因,不知道如何解决故障,当然也就无法正常的使用电脑了.就如今天一位朋友在咱们论坛上提到的,win7电脑中的网络连接显示未知状态,这是什么原因引起的呢?下面,咱们就一起来分析一下吧! 故障分析:一般来说,ghost win7 64位旗舰版下载中出现网络连接显示未知状态的情况都是由于系统网络所依赖的服务或组无法启动所引起的问题.大致解决方法如下: 一.咱

笔记本电脑XP中无线网络连接”属性里面无“无线网络配置”选项的解决

故障现象:笔记本上使用windows自带的无线网络配置时发现"无线网络连接"属性里面无"无线网络配置"选项,如下图所示: 解决方法:此问题是由于wins本身关于无线网络的Wireless Zero Configuration 服务未开启,在"计算机管理-服务和应用程序-服务"里面把Wireless Zero Configuration服务启动即可以,如下图所示: Wireless Zero Configuration开启后,在打开"网上

CentOS 7 中查看网络连接的示例

一直用 ifconfig 命令查看 CentOS 中的网络连接,包括 IP 地址.MAC 地址.网络连接状态等.升级到 CentOS 7 之后 ifconfig 就找不到了,原来这个指令已经被废弃,改用 ip 指令.同样的事情也发生在 RHEL 7.Oracle Linux 7.Scientific Linux 7 的 minimal 版本中. 在 CentOS 7 minimal 系统中,可以用 "ip addr"."ip link"查看网络连接及其状态,使用&q

Windows XP中快速进入网络连接窗口

在Windows XP中,当我们需要查看网络属性或更改网络设置时,只需右键单击桌面上的"网上邻居"图标选择属性,即可进入"网络连接"窗口,而不必通过控制面板逐级浏览.而在Windows Vista中,情况有了些许改变,桌面"网络"图标的属性链接至"网络与共享中心"页面,而要进入"网络连接"界面,用户不得不进行附加的操作,即通过左侧任务列表中的"管理网络链接". 虽然这不是一个太大的问题,

Android中判断网络连接状态的方法_Android

App判断用户是否联网是很普遍的需求,实现思路大概有下面几种 利用Android自带的ConnectivityManager类 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网 也可以利用get请求访问www.baidu.com,如果get请求成功,说明可以上网 1.判断网络是否已经连接 // check all network connect, WIFI or mobile public static boolean isNe