- 浏览: 341076 次
- 性别:
- 来自: 温州
-
文章分类
最新评论
-
helloworldlove:
Axis_UNZIP_PATH\Axis-version\we ...
3步把您的java程序转换为webservice -
hcqenjoy:
这个工具能再提供下吗 已经没办法下载了 谢谢
汉化 Flex Builder 3 帮助文档 -
NASa_CJ:
String source = HttpClientExamp ...
利用HttpClient获取网页内容 -
zlsj80:
下载地址无效了,楼主修正一下吧
汉化 Flex Builder 3 帮助文档 -
fykyx521:
下载地址都不能用了,是不过时了
汉化 Flex Builder 3 帮助文档
本文描述了在J2me中开发主要使用的网络连接方法,分别详细介绍了使用http和socket两种方法。
HttpConnection
首先我们先来看一个简单的例子吧:
主要用到的java包:
javax.microedition.io.*;
public String requestGET(String URLString,String URL) throws IOException{
// =====================================
// URLString是HTTP地址,URL为后面的参数
// 这里的例子是发送用的用户名和密码到服务器端进行用户验证
// 比如 String URLString = "http://192.168.0.1:8080/login.jsp";
// String URL = "?Name="+this.txtName+"&Pass="+this.txtPass
// =====================================
HttpConnection hpc = null;
DataInputStream dis = null;
boolean newline = false;
String content = "";
try{
// =====================================
// 建立连接
// =====================================
hpc = (HttpConnection)Connector.open(URLString+URL);
hpc.setRequestMethod(HttpConnection.GET);
dis = new DataInputStream(hpc.openInputStream());
int character;
// =====================================
// 读取返回的HTTP内容
// ====================================
while((character = dis.read()) != -1){
if((char)character == '\\'){
newline = true;
continue;
}
else{
if((char)character =='n'&& newline){
content +="\n";
newline = false;
}
else if(newline){
content +="\\" +(char)character;
newline = false;
}
else{
content +=(char)character;
newline = false;
}
}
}
}
catch(IOException e){
System.out.print("ERROR:"+e);
}
finally{
if(hpc != null){
hpc.close();
hpc = null;
}
if(dis != null){
dis.close();
}
}
// ====================================
// 由于内容可能有中文,所以在接受到信息后要对内容进行字符集的转换
// ====================================
content = (unicodeTogb2312(content)).trim();
return content;
}
public static String unicodeTogb2312(String s){
if (s==null){ return ""; }
if (s.equals("")){ return s; }
try{
return new String(s.getBytes("ISO8859_1"),"gb2312");
}
catch(Exception uee){
return s;
}
}
以上就是一个简单的HTTP连接并且从服务器获取响应信息的例子,应该很简单了吧。客户端就是上面那个样子,服务器端只要配置好IIS,增加一个网页来对客户端的请求做出响应就行了,其实跟一般的网页请求没有多大区别,很简单吧!!
上面的Socket客户端连接程序就应该算是完工了,下面是搭建服务器端对客户端的连接进行响应。建立服务器端程序,只需要有以下代码即可:
SocketConnection
下面还是从实例入手讲一下J2me的Socket编程。
程序首先打开以IP地址为192.168.0.1:6666的Socket连接,如果连接失败则抛出异常,程序结束。如果Socket连接成功,则继续。
public boolean SocketConn(String s) throws IOException{
// ==================================
// s是Socket连接字符串
// 这里的例子是发送用的用户名和密码到服务器端进行用户验证
// 比如 String s = "socket://192.168.0.1:6666"
// ==================================
private StreamConnection conServer;
private String strServerAddr;
private boolean bConnected;
conServer = null;
strServerAddr = s; // 连接地址
bConnected = false; // 连接状态
try
{
conServer = (StreamConnection)Connector.open(strServerAddr);
}
catch(Exception exception)
{
System.out.println("Connect server error");
bConnected = false;
return false;
}
bConnected = true;
System.out.println("connect ok!");
return true;
}
上面的Socket客户端连接程序就应该算是完工了,下面是搭建服务器端对客户端的连接进行响应。建立服务器端程序,只需要有以下代码即可:
..........
try{
// 建立端口为6666的socket服务器
ServerSocketConnection SocketSer;
SocketSer = (ServerSocketConnection)Connector.open("socket://:6666");
// 等待客户端连接
SocketConnection sc;
// 如有连接,则新增一个线程对连接进行处理
sc = (SocketConnection)SocketSer.acceptAndOpen();
..........
while(true){
// 对sc的InputStream和OutPutStream进行处理
}
}
..........
在这里需要说明一下我的看法,手机通过Socket连接上服务器后,由于我用的是中国移动的号码,所以跑的是GPRS通道,我所建立的服务器连接所获得的客户端IP只是一个虚拟IP,而这个IP估计是以用户当前最近的移动机站的编码通过一些变化而产生的,所以当用户不停的移动的时候,IP也许会发生变化(这里我就不太清楚了),有兴趣的可以去看看“移动虚拟IP技术”相关的报道。本来我以前的想法是用户连接到服务器后只要IP不变就可以实现服务器向客户端广播数据,但是这个IP并非是长连接,服务器在广播数据的时候也许会有很大部分的客户端的IP会出现变化,所以最后还是采用由客户端主动发送信息的形式。感觉有点扯远了,还是回到正题吧。
客户端在建立Socket连接成功后,即可向服务器发送信息,以下是发送信息模块
protected boolean sendData(byte abyte0[])//自己替换[]
{
System.out.println("send :" + bConnected);
// 判断连接情况
if(!bConnected)
return false;
OutputStream outputstream = null;
try
{
outputstream = conServer.openOutputStream();
// 写信息到outputstream中
outputstream.write(abyte0);
// 我的理解是强制送出所有已经写了的信息
outputstream.flush();
outputstream.close();
}
catch(Exception exception)
{
System.out.println("Send Data error");
bConnected = false;
try
{
if(outputstream != null)
outputstream.close();
// 调用断开连接的函数
disconnect();
}
catch(Exception exception1) { }
return false;
}
return true;
}
下面是读取服务器响应的信息,其他的就不一一说了,把outputstream改为inputstream,然后使用inputstream的read方法就可以了。
..............
inputstream = conServer.openInputStream();
..............
HttpConnection
首先我们先来看一个简单的例子吧:
主要用到的java包:
javax.microedition.io.*;
public String requestGET(String URLString,String URL) throws IOException{
// =====================================
// URLString是HTTP地址,URL为后面的参数
// 这里的例子是发送用的用户名和密码到服务器端进行用户验证
// 比如 String URLString = "http://192.168.0.1:8080/login.jsp";
// String URL = "?Name="+this.txtName+"&Pass="+this.txtPass
// =====================================
HttpConnection hpc = null;
DataInputStream dis = null;
boolean newline = false;
String content = "";
try{
// =====================================
// 建立连接
// =====================================
hpc = (HttpConnection)Connector.open(URLString+URL);
hpc.setRequestMethod(HttpConnection.GET);
dis = new DataInputStream(hpc.openInputStream());
int character;
// =====================================
// 读取返回的HTTP内容
// ====================================
while((character = dis.read()) != -1){
if((char)character == '\\'){
newline = true;
continue;
}
else{
if((char)character =='n'&& newline){
content +="\n";
newline = false;
}
else if(newline){
content +="\\" +(char)character;
newline = false;
}
else{
content +=(char)character;
newline = false;
}
}
}
}
catch(IOException e){
System.out.print("ERROR:"+e);
}
finally{
if(hpc != null){
hpc.close();
hpc = null;
}
if(dis != null){
dis.close();
}
}
// ====================================
// 由于内容可能有中文,所以在接受到信息后要对内容进行字符集的转换
// ====================================
content = (unicodeTogb2312(content)).trim();
return content;
}
public static String unicodeTogb2312(String s){
if (s==null){ return ""; }
if (s.equals("")){ return s; }
try{
return new String(s.getBytes("ISO8859_1"),"gb2312");
}
catch(Exception uee){
return s;
}
}
以上就是一个简单的HTTP连接并且从服务器获取响应信息的例子,应该很简单了吧。客户端就是上面那个样子,服务器端只要配置好IIS,增加一个网页来对客户端的请求做出响应就行了,其实跟一般的网页请求没有多大区别,很简单吧!!
上面的Socket客户端连接程序就应该算是完工了,下面是搭建服务器端对客户端的连接进行响应。建立服务器端程序,只需要有以下代码即可:
SocketConnection
下面还是从实例入手讲一下J2me的Socket编程。
程序首先打开以IP地址为192.168.0.1:6666的Socket连接,如果连接失败则抛出异常,程序结束。如果Socket连接成功,则继续。
public boolean SocketConn(String s) throws IOException{
// ==================================
// s是Socket连接字符串
// 这里的例子是发送用的用户名和密码到服务器端进行用户验证
// 比如 String s = "socket://192.168.0.1:6666"
// ==================================
private StreamConnection conServer;
private String strServerAddr;
private boolean bConnected;
conServer = null;
strServerAddr = s; // 连接地址
bConnected = false; // 连接状态
try
{
conServer = (StreamConnection)Connector.open(strServerAddr);
}
catch(Exception exception)
{
System.out.println("Connect server error");
bConnected = false;
return false;
}
bConnected = true;
System.out.println("connect ok!");
return true;
}
上面的Socket客户端连接程序就应该算是完工了,下面是搭建服务器端对客户端的连接进行响应。建立服务器端程序,只需要有以下代码即可:
..........
try{
// 建立端口为6666的socket服务器
ServerSocketConnection SocketSer;
SocketSer = (ServerSocketConnection)Connector.open("socket://:6666");
// 等待客户端连接
SocketConnection sc;
// 如有连接,则新增一个线程对连接进行处理
sc = (SocketConnection)SocketSer.acceptAndOpen();
..........
while(true){
// 对sc的InputStream和OutPutStream进行处理
}
}
..........
在这里需要说明一下我的看法,手机通过Socket连接上服务器后,由于我用的是中国移动的号码,所以跑的是GPRS通道,我所建立的服务器连接所获得的客户端IP只是一个虚拟IP,而这个IP估计是以用户当前最近的移动机站的编码通过一些变化而产生的,所以当用户不停的移动的时候,IP也许会发生变化(这里我就不太清楚了),有兴趣的可以去看看“移动虚拟IP技术”相关的报道。本来我以前的想法是用户连接到服务器后只要IP不变就可以实现服务器向客户端广播数据,但是这个IP并非是长连接,服务器在广播数据的时候也许会有很大部分的客户端的IP会出现变化,所以最后还是采用由客户端主动发送信息的形式。感觉有点扯远了,还是回到正题吧。
客户端在建立Socket连接成功后,即可向服务器发送信息,以下是发送信息模块
protected boolean sendData(byte abyte0[])//自己替换[]
{
System.out.println("send :" + bConnected);
// 判断连接情况
if(!bConnected)
return false;
OutputStream outputstream = null;
try
{
outputstream = conServer.openOutputStream();
// 写信息到outputstream中
outputstream.write(abyte0);
// 我的理解是强制送出所有已经写了的信息
outputstream.flush();
outputstream.close();
}
catch(Exception exception)
{
System.out.println("Send Data error");
bConnected = false;
try
{
if(outputstream != null)
outputstream.close();
// 调用断开连接的函数
disconnect();
}
catch(Exception exception1) { }
return false;
}
return true;
}
下面是读取服务器响应的信息,其他的就不一一说了,把outputstream改为inputstream,然后使用inputstream的read方法就可以了。
..............
inputstream = conServer.openInputStream();
..............
发表评论
-
Java 5.0 多线程编程实践
2006-01-23 13:20 788<noscript type="text/ja ... -
web开发框架——JSF开发实战
2006-01-23 20:01 1447JSF开发实战的第一篇(jsf开发实战一)演示了如何建立一个最 ... -
Tomcat 的数据库连接池设置与应用
2006-01-23 20:28 7821.将数据库驱动程序的JAR文件放在Tomcat的 commo ... -
Eclipse Plugins Manager Beta 0.1 (Link's Only) 发布
2006-03-18 17:11 817<noscript type="text/ja ... -
常青图书管理系统 BETA V0.1
2006-03-19 15:03 857<noscript type="text/ja ... -
Java程序的性能优化
2006-03-19 15:15 819<noscript type="text/ja ... -
Java中四种XML解析技术之不完全测试
2006-03-20 12:16 714<noscript type="text/ja ... -
解决Tomcat中文乱码问题
2006-03-26 22:58 883一、中文问题的来源 计算机最初的操作系统支持的编码是单 ... -
Swing技巧. 设置全局字体(sun jdk)
2006-04-02 14:04 1362S ... -
Dom4j 使用简介
2006-04-05 20:19 687DOM4J是dom4j.org出品的一个开源XML解析包 ... -
Java手机技术 之 J2ME及其基本慨念
2006-04-06 12:42 739如果您曾经http://www.javasoft.com ;网 ... -
Java手机技术 之 J2ME新手入门要点
2006-04-06 12:50 1016一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
JAVA设计模式系列之Singleton模式
2006-04-06 13:18 850单态定义: Singleton模式主要作用是保证在Java应 ... -
高手指点你实战体会Java的多线程编程
2006-04-06 13:39 851在 Java 程序中使用多线程要比在 C 或 C++ 中容 ... -
Java基础--JSP应用语法详解大全
2006-04-06 13:49 9271)HTML注释: 可以用注释内容,也可以用表达式. 2) ... -
javamail使用完全手册
2006-04-08 20:44 8951,哪里是开始:初始环境,安装好你的j2sdk和你的web服务 ... -
JavaMail通过sina的smtp验证
2006-04-08 20:47 1145import javax.mail.*;import java ... -
用javamail发送邮件
2006-04-08 20:49 1009用javamail发送邮件 aistill(原作) ... -
修改后可以发送附件、抄送、密送的javabean
2006-04-08 20:51 958/**A ... -
javamail实现smtp身份认证
2006-04-08 20:57 976现在大多 ...
相关推荐
本文将详细介绍J2ME中的网络通信技术,特别是HTTP和Socket两种常用方法,并通过具体的示例代码帮助读者更好地理解和应用这些技术。 #### 二、HTTPConnection详解 HTTP (Hypertext Transfer Protocol) 是一种用于从...
**Premier.Press.J2ME.ebook-LiB.chm**可能是关于J2ME游戏编程的电子书,其中可能包含了深入的理论讲解、实例分析和实战技巧。**file_id.diz**通常是一个文件标识文件,包含书的简短介绍。**LiB.nfo**可能包含书籍的...
9. **源代码分析**:随书附带的源代码可以作为实例,通过阅读和分析这些代码,能够加深对 J2ME 游戏开发的理解。 10. **调试技巧**:学习如何使用 J2ME 的模拟器或者实际设备进行调试,找出并修复程序中的错误。 ...
这个“J2ME&Gaming中文版”教材主要针对的是Java在游戏开发领域的应用,为初学者提供了学习J2ME编程的基础路径。 J2ME的架构由两部分组成:Connected Limited Device Configuration (CLDC) 和 Mobile Information ...
11. **实例分析**:每个章节都配有实际的代码示例,通过分析这些小游戏的源代码,学习如何将理论知识应用到实践中。 12. **游戏逻辑**:讲解游戏规则的编程实现,如游戏规则的定义、得分计算等。 13. **多线程**:...
本教程源代码提供了一种实践性的学习方法,帮助开发者深入理解J2ME编程。 J2ME的核心在于其可移植性,它通过定义不同的配置(Configurations)和 profiles(配置文件)来适应不同类型的设备。主要的配置有Connected...
【JB.rar_j2me】是一个压缩包,其中包含与J2ME(Java 2 Micro Edition)编程相关的示例。J2ME是Java平台的一个子集,专为资源有限的设备,如...通过学习和分析这些文件,开发者可以了解J2ME编程的基本原理和实践技巧。
在这个超简单的J2ME游戏实例中,我们主要关注两个核心文件,它们构成了游戏的基础。 1. **JAVA源码**: J2ME游戏的编写通常使用Java语言,源代码是游戏逻辑的核心。开发者会用到J2ME的MIDP(Mobile Information ...
Java 2 Micro Edition (J2ME) 是一种针对小型设备,如移动电话和嵌入式系统的Java平台。它由两部分组成:KVM(K Virtual Machine)和MIDP(Mobile Information Device Profile)。在本教程中,我们将深入探讨一个...
【描述】提到的“跳远体育类J2ME源代码”表明这是一款基于运动游戏的编程实例,特别是模拟真实世界中的跳远运动。它强调了“动作细腻”,这意味着源代码可能包含精心设计的动画和物理模拟,使游戏体验更加逼真。同时...
通过上述介绍可以看出,在J2ME环境下使用Socket进行网络编程是一种实用且有效的技术手段。开发者可以根据实际需求选择合适的Socket类型(TCP或UDP),并通过合理的代码设计实现稳定的网络通信功能。同时,在开发过程...
"j2me-案例文档.rar"这个压缩包很可能是包含了一系列关于J2ME编程的实例和教程。 J2ME架构主要由两部分组成:配置(Configurations)和框架(Profiles)。配置定义了基本的Java虚拟机(JVM)和类库,而框架则进一步...
这本书的源码提供了丰富的实例,帮助读者深入理解J2ME编程的核心概念。 1. **J2ME架构与环境** J2ME由配置(Configurations)和框架(Profiles)组成。配置定义了基础的Java虚拟机(JVM)和核心库,而框架则添加了...
**J2ME(Java 2 Micro Edition)是Java平台的...通过以上课件的学习,开发者将能够熟练掌握J2ME编程,从简单的应用程序到复杂的手机游戏和实用工具,都能得心应手。不断实践和深入研究,将使你在J2ME开发领域游刃有余。
这个压缩包文件包含了一些与J2ME相关的学习实例,可以帮助用户深入理解J2ME编程。 标题中的"关于j2me方面的里面有几个例子"指的是该压缩包中可能包含多个J2ME应用的源代码示例。这些例子通常是为了展示特定的编程...
总的来说,"开灯关灯J2me手机游戏"不仅是一个娱乐项目,更是一个学习J2ME编程的实例教材,有助于开发者提升在移动平台上开发互动应用的技能。通过分析这个游戏,我们可以了解到J2ME的编程规范、游戏设计原则以及性能...
通过这个项目,初学者可以学习到J2ME编程的基本技巧,包括UI设计、游戏循环、资源管理等。同时,对于熟悉经典游戏“仙剑奇侠传”的人来说,这个项目提供了一个将熟知的故事与现代编程技术结合的实践机会。总的来说,...
Java是一种广泛使用的编程语言,尤其在移动应用领域,如J2ME(Java 2 Micro Edition),它被设计用于资源有限的设备,如早期的手机和嵌入式系统。本实例源码是基于Java的J2ME平台开发的一款简单游戏——潜艇大战。...
通过分析和运行这些代码,开发者可以更深入地理解J2ME GUI编程的实践应用。 通过以上知识点的学习和实践,开发者能够有效地构建功能丰富的J2ME应用程序,特别是在创建用户交互界面方面。对于无线电应用或者任何其他...
1. J2ME编程基础:了解如何在有限的资源环境下编写Java程序,包括使用J2ME的特定API和框架。 2. 用户界面设计:如何在小屏幕设备上创建直观的触摸屏界面,处理用户的触摸输入事件。 3. 游戏逻辑实现:理解围棋的基本...