微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 开发MIDP联网应用程序

开发MIDP联网应用程序

时间:05-07 来源:互联网 点击:

pp()throwsMIDletStateChangeException{

try{

HttpConnectioncon=(HttpConnection)Connector.open(http://localhost:8080/nec_server/servlet/ReverseServlet);

//指定POST

con.setRequestMethod(HttpConnection.POST);

//在request中输入数据

Stringmessage=message=helloworld;

DataOutputStreamdos=con.openDataOutputStream();

byte[]messageByte=message.getBytes();

for(inti=0;i

dos.writeByte(messageByte[i]);

}

dos.flush();

dos.close();

//接收response

DataInputStreamin=con.openDataInputStream();

intinput;

while((input=in.read())!=-1){

System.out.print((char)input);

}

in.close();

//关闭链接

con.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

protectedvoidpauseApp(){

}

protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{

}

}

ex.8

接下来介绍本次使用的SERVLETsample,作为服务器实际安装的例子。因为本讲座是MIDP讲座,所以关于SERVLET的详细说明就不再赘述,网上有许多这方面的信息,请大家参考Sun—http://java.sun.com/products/servlet/等网站。

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

/**

*把接收的文字列进行转发的SERVLET

*/

publicclassReverseServletextendsHttpServlet{

/**

*处理postrequest

*/

protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseres)

throwsServletException,IOException{

//接收参数

Stringmessage=req.getParameter(message);

//转发文字

Stringreverse=;

for(inti=message.length();i>0;i--){

reverse=reverse+message.charAt(i-1);

}

//写response

PrintWriterout=res.getWriter();

out.write(

n);

out.write(

n);

out.write(

n);

out.write(n);

out.write(

n);

out.write(messageis+message+
n);

out.write(ReverseMessageis+reverse+n);

out.write(

n);

out.write();

out.close();

}

}

ex.9

实际操作如下所示:

2

2.制作应用程序

现在,我们介绍如何实际制作利用HTTP通信的应用程序。这次增添了以前所作的泡泡龙游戏(BlockApplication)的内容,并把游戏结束的时间作成高低分一览表,由服务器管理。为了使程序更简单,还省略了与声音相关的操作。以下是内容改变前的sourcecode:

BlockApplication.java

BlockCanvas.java

给这个程序添加

•计算结束时间功能。

•向服务器发送时间表功能。

•从服务器接收最高分功能。

通过游戏或游戏结束时,显示出最高分。

为了计算Http通信和时间表,给实际变量添加以下变量:

//相关经过时间

privateintsecond=0;

privatelongstartMs;

//http通信类

privatefinalStringSERVER_URL=

http://localhost:8080/nec_server/servlet/BlockScoreServlet;//服务器的UPL

privateString[]highscore=null;//最高分

ex.10

2.1.计算结束时间

为了计算结束时间,要记录游戏开始时的系统时间(startMs),以这个时间为准计算经过时间,如下画面所示:

/*****************************************

*计时器相关处理

*****************************************/

/**

*计算经过时间

*/

publicintgetSecond(){

return(int)((System.currentTimeMillis()-startMs)/1000);

}

ex.11

2.2.向服务器发送时间表,接收最高分

如上所述,游戏结束时显示最高分。但是,游戏结束时向服务器发送时间表,而通过游戏时不发送时间表,只显示最高分。

为在通过游戏时显示最高分,要与服务器进行通信,由此获得最高分。这里,可以用我们介绍的HttpConnection,利用GET取得最高分。可以在游戏结束时使用以下方法。

/**

*与服务器进行通信,获取最高分。

*/

publicString[]getHighScore(){

String[]str=newString[5];

HttpConnectioncon=null;

DataInputStreamin=null;

try{

con=(HttpConnection)Connector.open(SERVER_URL);

//接收response

in=con.openDataInputStream();

intinput;

inti=0;

Strings=;

while((input=in.read())!=-1){

if((char)input=='n'){

str[i]=s;

i++;

s=;

continue;

}

s=s+(char)input;

}

}catch(IOExceptione){

e.printStackTrace();

}finally{

if(con!=null){

try{

con.close();

}catch(IOExceptione1){

e1.printStackTrace();

}

}

if(in!=null){

try{

in.close();

}catch(IOExceptione1){

e1.printStackTrace();

}

}

}

returnstr;

}

ex.12

下面是进行游戏时的操作。结束游

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top