J2ME网络编程以及网络游戏的实现Word文档格式.docx
《J2ME网络编程以及网络游戏的实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《J2ME网络编程以及网络游戏的实现Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
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浏览器中输入http:
//127.0.0.1:
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/资源名称就可以访问这个服务器上的资源了,
如:
http:
8080/515game/myweb.html
8080/515game/kk.wav
假如这台主机在公网的IP地址为221.196.125.11在互联网中可以过以下地址来访问:
//221.196.125.11:
在j2me中提供了访问网络的相关类,封装到了javax.microedition.io里面提供了相关类,下面我们通过实例介绍如果通过GCF来让j2me的客户端获取Web服务器缎的资源
二、从Web获取文字信息
importjavax.microedition.midlet.*;
importjavax.microedition.io.*;
importjava.io.*;
importjavax.microedition.lcdui.*;
publicclassgetHttp
extendsMIDlet{
publicvoidstartApp(){
try{
//打开网络连接
Stringurl="
//127.0.0.1/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获取图片信息
publicclasstestPic
//127.0.0.1/515game/back0.png"
//获取图片
Imageim=Image.createImage(is);
//该方法为MIDP2.0方法
f.append(im);
//关闭连接
四、从Web获取多媒体信息
importjavax.microedition.media.*;
publicclassgetMusic
//127.0.0.1/515game/kk.wav"
//获取声音
Playerp1=Manager.createPlayer(is,"
audio/x-wav"
p1.start();
System.out.println("
soundisplay"
catch(Exceptione){
e.printStackTrace();
五、基于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
passworderror"
usernameerror"
%>
客户端程序
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);
publicvoidstartApp(){}
publicvoidcommandAction(Commandc,Displayabledd){
Threadt=newThread(this);
t.start();
//启动线程连结网络
//完成网络请求
publicvoidrun(){
//打开网络
//127.0.0.1/515game/checkuser.jsp?
username="
+
user.getString()+"
&
password="
+pass.getString();
//获取数据
while((tmp=is.read())!
=-1){
Formf2=newForm("
登陆结果"
f2.append(get);
Display.getDisplay(this).setCurrent(f2);
//关闭网络
六、一个网络游戏实例
下面我们通过一个网络猜价格的游戏实例来说明如何通过J2me同服务器端交换数据。
这是一个网络版商品竞猜的实例,客户端输入商品价格,在服务器端负责游戏逻辑的处理。
服务器端代码:
Guess.jsp这个文件放到d:
Stringsjg=request.getParameter("
jg"
intjg=(int)(Math.random()*10);
intuserjg=Integer.parseInt(sjg);
if(userjg>
jg)
out.println("
sorrydale"
if(userjg<jg)
sorryxiaole"
if(userjg==jg)
right"
J2me客户端代码:
publicclassGuessGame
publicFormf,f2;
publicTextFieldtf1;
publicDisplayd;
publicCommandc1,c2;
publicGuessGame(){
商品竞猜"
f2=newForm("
竞猜结果"
c2=newCommand("
返回"
f2.addCommand(c2);
f2.setCommandListener(this);
tf1=newTextField("
请输入商品价格1-9"
1,TextField.NUMERIC);
f.append(tf1);
d=Display.getDisplay(this);
d.setCurrent(f);
publicvoidcommandAction(Commandc,Displayabled){
if(c==c1){//启动网络请求
(newThread(this)).start();
if(c==c2){
this.d.setCurrent(f);
//127.0.0.1/515game/Guess.jsp?
jg="
+tf1.getString();
//获取请求结果
get=get+(char)(tmp);
for(inti=0;
i<
f2.size();
i++){
f2.delete(i);
d.setCurrent(f2);
}