import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.ContentConnection;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
// 第六章 开发无线网络应用程序
//Generic Connection Framework --通用连接框架
//GCF的特性:
// 基于接口设计,便于扩展,提供了创建连接的工厂方法 ,使用标准的url
// 各接口的作用:HttpConnection HttpsConnection 接口,使得MIDlet 具备了通过Http 或者Https 协议与server 通信的能力;
// 可选:SocketConnection / ServerSocketConnection、UDPDatagramConnection , 使得MIDlet 能够在TCP/IP 层通过Socket进行通信或者
// 使用数据报进行通信
// 现实世界使用的是:分组数据交换和电路交换 , 因此在联网框架中定义了 :DatagramConnection 和 StreamCononection;
// 在基于流的传输中我们要对输入流和输出流是具有操作能力的;StreamConnection 扩展了InputConnection 和OutputConnection; 打开:Con.opeanInputStream();
// SreamConnectionNotifier接口定义了连接监听器应该具备的能力;
public class SixSection_GCF extends MIDlet {
//准备需要使用到的数据类型
private ContentConnection connection = null;
private ByteArrayOutputStream baos = null; // 字节数据输出流
private Image image = null; //初始化图片
private byte[] imageData = null;
private DataInputStream dis = null; // 新建数据输出流
private Form form = new Form("下载图片");
private Display display ;
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stubs
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display = Display.getDisplay(this);
getImage("http://localhost:8080/imageSite/mv.jpg");
form.append(image);
display.setCurrent(form);
}
//下载图片
public void getImage(String url){
try{
//建立Http连接
connection = (ContentConnection) Connector.open(url);
//新建输入输入流
dis = connection.openDataInputStream();
//获得Http连接的长度
int length =(int) connection.getLength();
if(length!=-1){
imageData = new byte[length];
//使用流读取 --输入,读 /输出,写
dis.readFully(imageData); // 读取到数据
}else{
baos = new ByteArrayOutputStream();
int ch = 0;
while((dis.read())!=-1){
baos.write(ch);
imageData = baos.toByteArray();
}
}
image = Image.createImage(imageData, 0, imageData.length);
}catch(Exception exs){
exs.printStackTrace();
}finally{
//资源回收
try{
if(connection!=null){connection.close();}
if(dis!=null){
dis.close();
}
if(baos!=null){
baos.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
分享到:
相关推荐
在Java Micro Edition (J2ME)的Mobile Information Device Profile (MIDP)中,通用连接框架(Generic Connection Framework,简称GCF)是一个重要的组件,它为移动设备提供了与其他设备进行数据传输的能力。GCF位于`...
本章将深入探讨J2ME中的联网技术,特别是通用连接框架(Generic Connection Framework, GCF)。 ### 10.1 J2ME联网技术简介 在Java Standard Edition (J2SE)中,我们通常使用`java.net`和`java.io`包中的类来处理...
首先,我们要了解的是J2ME的通用连接框架(Generic Connection Framework,简称GCF)。GCF是J2ME提供的一种标准化的接口,它使得开发者能够方便地接入各种网络协议,如TCP/IP、HTTP、UDP等。GCF的核心在于`javax....
本文将深入探讨J2ME的网络编程,特别是通用连接框架(Generic Connection Framework,GCF)的基础知识,以及在中国环境下进行网络开发的注意事项。 **通用连接框架(GCF)** GCF是J2ME中用于实现设备间网络通信的...
本文将探讨J2ME的通用连接框架(Generic Connection Framework,GCF),以及在中国环境下进行网络开发的关键点。 **通用连接框架(GCF)** GCF是J2ME中用于网络连接的核心组件,它提供了一组接口,允许开发者创建...
**通用连接框架**(Generic Connection Framework, GCF),是J2ME中处理网络连接的核心组件,它为开发者提供了一套统一的接口,用于实现不同类型的网络连接,包括但不限于HTTP、FTP、TCP/IP等。GCF的灵活性在于它能够...
Java蓝牙API主要依赖于Java通用连接框架 (Generic Connection Framework, GCF),这是一个长期存在于J2ME中的框架。虽然有提议将GCF包含进Java 2 Standard Edition (J2SE) 中,但目前它的主要应用场景仍然集中在J2ME...
MIDP包含对CLDC中的GCF(Generic Connection Framework),即通用连接框架的支持,MIDP规范只是要区分必须实现HTTP的连接。如果想开发的是基于无线网络的高性能的多人联网游戏,这非常值得考虑应用。目前的情况是,...
在J2ME中,实现HTTP传输主要依赖于`javax.microedition.io`包中的网络类,尤其是通用连接框架(Generic Connection Framework,GCF)。GCF提供了一个抽象层,允许开发者在不同类型的移动设备上进行网络通信,而无需...
J2ME提供了多种网络连接方式,其中最重要的是基于CLDC的通用连接框架(GCF)。GCF是J2ME中的核心网络通信组件,提供了多种连接接口,例如: - **Connector类**:用于创建各种类型的网络连接。 - **Connection接口**...
- **背景**: 基于通用连接框架(Generic Connection Framework, GCF)的I/O操作对于文件访问的支持不足,FC APIs弥补了这一缺陷。 - **功能**: FC APIs不仅支持文件的基本操作,如读取、写入等,还支持更高级的操作...
J2ME技术中的通用连接框架(Generic Connection Framework,GCF)提供了网络连接的能力,其中HttpConnection类用于创建HTTP连接。 文章中还提到使用Eclipse作为集成开发环境,结合Tomcat服务器和EclipseMe插件来...
PUSH注册机制是JAVA移动设备应用程序开发的一种被自启动的方法,PUSH注册机制位于AMS(应用程序管理软件)的内部,其是通用连接框架(GCF)的的一部分。PUSH注册机制主要包括入站连接队、时钟警告队、基于入站连接的...
首先,Java蓝牙API是基于Java通用连接框架(GCF)的,虽然GCF曾是限制Java蓝牙应用的一个因素,但现在已被提议加入到J2SE中。API包含两个主要包:`javax.bluetooth`是核心蓝牙功能,而`javax.obex`用于对象交换协议...
程序的核心是MyMIDlet,这是一个继承自`java.microedition.midlet.MIDlet`的类,它依赖于蓝牙核心包`javax.bluetooth`以及通用连接框架(General Connection Framework, GCF)包`javax.microedition.io`。...