J2ME网络编程以及网络游戏的实现2_第1页
J2ME网络编程以及网络游戏的实现2_第2页
J2ME网络编程以及网络游戏的实现2_第3页
J2ME网络编程以及网络游戏的实现2_第4页
J2ME网络编程以及网络游戏的实现2_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

随着网络技术的发展,在将来的无线通信时代中,大量的网络应用程序将被开发出来去满足无线移动通讯的要求,而要充分的发挥无线移动通讯设备的通信能力,J2ME网络编程就变得尤为重要。

一、使用Tomcat搭建Web服务器

绝大多数的网络应用都是将数据信息保存到DBServer(数据库服务器),通过WebServer协调各种客户端的请求与响应,存取数据库中的数据。数据库服务器和Web服务器可能是网络中的1台或多台的设备;客户端可以通过网际中的通用协议(如http协议)对服务器端进行访问,客户端或者是pc上的web浏览器,或者是移动设备,只要能支持网络通讯的协议就应该能够正确获取服务器端的资源。

我们首先介绍一下使用Tomcat搭键web服务器,在安装Tomcat5。0之前首先要下载

j2sdk、Tomcat5.0的安装文件

第1步安装j2sdk进入欢迎画面

第2步接受相关协议条款,然后选择Next

第3步选择安装路径,默认为c:\j2sdk1.4.2_05,这里我们不变,选择Next,(这个路径很重要,如果我们改变了,一定要记住)。

第4步系统会自动拷贝文件

第5步安装完成单击finish。

第6步安装Tomcat5.0,首先进入欢迎界面,单击Next。

第7步接受相关协议条款,然后选择Next

第8步选择完全安装Full,然后选择Nextt安装界面2

第9步确定安装目录,这里我们确定为C:Tomcat5.0,然后选择Next

第10步确定Web服务器管理员的用户名和密码以及默认的端口,,然后选择Next

用户名admin

密码123(要记住该密码用于对服务器的各种管理)

默认端口8080

第11步确定java虚拟机的所在路径,,然后选择Next

路径C:\j2sdk1.4.2_05(和我们之前安装JDK的路径要一致)

第12步系统自动拷贝文件。

第13步安装完成,系统提示是否马上运行,单击Finish,我们会在屏幕的右下角看到Tomcat5.0的小图标。

第14步双击屏幕右下角Tomcat5.0图标,系统会弹出Tomcat运行窗口,在这个窗口中单击Start开启服务,到此Tomcat5.0安装完成,可以通过再Web浏览器中输入:8080/检测到欢迎的画面

安装完成Tomcat以后,下面的工作就是要把磁盘上的文件夹共享为互联网中的虚拟目录,用于客户端的访问。我们在D:创建如下的文件夹结构:

D:mygameWeb(这个目录将作为对外部的虚拟目录用来存放共享的各种资源)

在浏览器中单击页面左上第三项TomcatManager,这是系统会弹出一个窗口要求我们输入Tomcat管理的用户名和密码,输入用户名admin密码123后,按确定进入Web服务器管理页面。

在管理界面中的Deploy面板我们输入以下信息:

ContextPath(optional):/515game(虚拟目录的名称)

XMLConfigurationfileURL:

WARorDirectoryURL:file:d:/mygameWeb(真实的文件夹注意格式和大小写不要错)

填写完成以后单击Deploy发布虚拟目录

大功告成,我们可以把资源放到d:mygameWeb这个目录下面通过

http://ip/地址:8080/515game/资源名称就可以访问这个服务器上的资源了,

如::8080/515game/myweb.html

:8080/515game/kk.wav

假如这台主机在公网的IP地址为1在互联网中可以过以下地址来访问:

1:8080/515game/myweb.html

1:8080/515game/kk.wav

在j2me中提供了访问网络的相关类,封装到了javax.microedition.io里面提供了相关类,下面我们通过实例介绍如果通过GCF来让j2me的客户端获取Web服务器缎的资源

二、从Web获取文字信息

importjavax.microedition.midlet.*;

importjavax.microedition.io.*;

importjava.io.*;

importjavax.microedition.lcdui.*;

publicclassgetHttp

extendsMIDlet{

publicvoidstartApp(){

try{

//打开网络连接

Stringurl="/515game/myweb.html";

StreamConnectionsc=(StreamConnection)Connector.open(url);

//读取数据

InputStreamis=sc.openInputStream();

inttmp=0;

Stringget="";

while(tmp!=-1){//-1代表结束

tmp=is.read();

get=get+(char)tmp;

}

is.close();

Formf=newForm(url);

//解决中文问题

Stringchinese=newString(get.getBytes("iso8859-1"),"utf-8");

f.append(chinese);

Display.getDisplay(this).setCurrent(f);

//关闭网络连接

sc.close();

}

catch(Exceptione){}

}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanf){}

}

三、从Web获取图片信息

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

importjavax.microedition.io.*;

importjava.io.*;

publicclasstestPic

extendsMIDlet{

publicvoidstartApp(){

try{

//打开网络连接

Stringurl="/515game/back0.png";

StreamConnectionsc=(StreamConnection)Connector.open(url);

//获取图片

InputStreamis=sc.openInputStream();

Imageim=Image.createImage(is);//该方法为MIDP2.0方法

Formf=newForm(url);

f.append(im);

Display.getDisplay(this).setCurrent(f);

//关闭连接

sc.close();

}

catch(Exceptione){}

}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanf){}

}

四、从Web获取多媒体信息

importjavax.microedition.lcdui.*;

importjavax.microedition.midlet.*;

importjavax.microedition.io.*;

importjava.io.*;

importjavax.microedition.media.*;

publicclassgetMusic

extendsMIDlet{

publicvoidstartApp(){

try{

//打开网络连接

Stringurl="/515game/kk.wav";

StreamConnectionsc=(StreamConnection)Connector.open(url);

//获取声音

InputStreamis=sc.openInputStream();

Playerp1=Manager.createPlayer(is,"audio/x-wav");

p1.start();

//关闭网络连接

sc.close();

System.out.println("soundisplay");

}

catch(Exceptione){

e.printStackTrace();

}

}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanf){}

}

五、基于http的用户登陆系统实现

服务器端程序

checkuser.jsp这个文件放到d:/mygameWeb目录下面

<%

//得到用户名

Stringname=request.getParameter("username");

//得到密码

Stringpass=request.getParameter("password");

if(name.equals("ldh"))

{

if(pass.equals("zhm"))

{

out.print("welcome");

}

else

{

out.print("passworderror");

}

}

else

{

out.print("usernameerror");

}

%>客户端程序

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

importjavax.microedition.io.*;

importjava.io.*;

publicclasslogoIN

extendsMIDlet

implementsCommandListener,Runnable{

publicFormf;

publicTextFielduser;//用户名

publicTextFieldpass;//密码

publicCommandc1;

publiclogoIN(){

f=newForm("传奇世界用户登陆");

user=newTextField("用户名","",10,TextField.ANY);

pass=newTextField("密码","",8,TextField.PASSWORD);

f.append(user);

f.append(pass);

c1=newCommand("确定",Command.SCREEN,1);

f.addCommand(c1);

f.setCommandListener(this);

Display.getDisplay(this).setCurrent(f);

}

publicvoidstartApp(){}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanf){}

publicvoidcommandAction(Commandc,Displayabledd){

Threadt=newThread(this);

t.start();//启动线程连结网络

}

//完成网络请求

publicvoidrun(){

try{

//打开网络

Stringurl="/515game/checkuser.jsp?username="+

user.getString()+"&password="+pass.getString();

//获取数据

StreamConnectionsc=(StreamConnection)Connector.open(url);

InputStreamis=sc.openInputStream();

inttmp=0;

Stringget="";

while((tmp=is.read())!=-1){

get=get+(char)tmp;

}

Formf2=newForm("登陆结果");

f2.append(get);

Display.getDisplay(this).setCurrent(f2);

//关闭网络

sc.close();

}

catch(Exceptione){}

}

}

六、一个网络游戏实例

下面我们通过一个网络猜价格的游戏实例来说明如何通过J2me同服务器端交换数据。

这是一个网络版商品竞猜的实例,客户端输入商品价格,在服务器端负责游戏逻辑的处理。

服务器端代码:

Guess.jsp这个文件放到d:/mygameWeb目录下面

<%

Stringsjg=request.getParameter("jg");

intjg=(int)(Math.random()*10);

intuserjg=Integer.parseInt(sjg);

if(userjg>jg)

{

out.println("sorrydale");

}

if(userjg<jg)

{

out.println("sorryxiaole");

}

if(userjg==jg)

{

out.println("right");

}

%>

J2me客户端代码:

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

importjavax.microedition.io.*;

importjava.io.*;

publicclassGuessGame

extendsMIDlet

implementsCommandListener,Runnable{

publicFormf,f2;

publicTextFieldtf1;

publicDisplayd;

publicCommandc1,c2;

publicGuessGame(){

f=newForm("商品竞猜");

f2=newForm("竞猜结果");

c2=newCommand("返回",Command.SCREEN,1);

f2.addCommand(c2);

f2.setCommandListener(this);

tf1=newTextField("请输入商品价格1-9","",1,TextField.NUMERIC);

f.append(tf1);

c1=newCommand("确定",Command.SCREEN,1);

f.addCommand(c1);

f.setCommandListener(this);

d=Display.getDisplay(this);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论