开发MIDP联网应用程序
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 下面是进行游戏时的操作。结束游
- 基于dsPIC33F系列单片机的应用程序升级方法(04-03)
- 基于TrueFFS的铁路牵引自动化系统应用(10-30)
- 如何为您的下一个应用程序选择嵌入式系统(09-04)
- 高速PCI信号采集卡设计与实现综合实例之:主机应用程序和驱动程序的接口设计(06-04)
- 用户态应用程序直接访问I2C驱动(11-21)
- 浅谈单片机应用程序架构(11-21)