站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题用Java自制手机联网游戏(1)

用Java自制手机联网游戏(1)

摘要: 用Java自制手机联网游戏(1)
<tr><td>
http:///tech/article790.html
移动通信的迅速发展,使手机用户越来越多。手机制造商诺基亚曾宣称,计划在2003年底之前销售1亿台使用Java软件的移动电话。与此同时,Internet的进一步发展也急切需要用手机实现一些PC能够完成的功能。本文介绍了一个可以在手机上运行的联网游戏程序。通过这个程序,无论在何地,只要手机能够上网就可以和Internet上的朋友联网游戏(图11)。下面对程序的一些细节做一简要介绍,希望能给从事Java开发的技术人员一些启示。

J2ME简介

J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。

J2ME的构架

J2ME的构架如图1、图2所示。
540) this.width = 540'>
图1 J2ME的构架1
540) this.width = 540'>
图2 J2ME的构架2
序运行的环境

客户端即为手机(需支持J2ME的手机,例如motorola 388)用户,编程环境是Windows 2000 server + MotoJ2SDK+JDK1.3.1+MS SQL server2000,服务器端为Windows 2000 server+JDK1.3.1。

J2ME编程流程

以MotoJ2SDK的开发过程为例,其流程如下所示:
540) this.width = 540'>
图3 J2ME编程流程

程序简介

服务器端代码的编写
[]客户端和服务器端采用Socket连接。服务器端需要时刻监听客户的请求(如图4),一旦有客户需求,它就需要马上响应(如图5),并做出相应的处理,然后将结果返回给客户,客户显示服务器处理结果(如图10)。
540) this.width = 540'>
图4 服务器监听8000端口
[] 540) this.width = 540'>
图5 服务器接受到请求并响应请求

服务器端程序代码如下:
try{
gameServer gServer = new gameServer();//创建一个主类实例
gServer.newServerSocket(gServer.port);//监听gServer.port端口
while(true)//时刻等待客户端连接。
{
gServer.con = gServer.server.accept();//一旦有客户的请求,则接收客户请求。
[] multiRequest cThread=new multiRequest(gServer.gSocket);//为处理客户端请求建立线程。
cThread.start();//启动线程处理客户端请求。
}
}catch(IOException e)//捕获异常。
{
System.out.println(“Creating socket error!!!”);
System.exit(1);
[]}
[]

以下为multiRequest类的部分代码:
[]class multiRequest extends Thread
{
private Socket rSocket;
private DataInputStream is;
private DataOutputStream os;
String strReceive=null;
String strWhichService=null;
Private intType;
public multiRequest(Socket s)throws IOException//构造函数
{
rSocket = s;
[] inType = 0;
is = new DataInputStream(rSocket.getInputStream());//建立输入输出流。
os = new DataOutputStream(rSocket.getOutputStream());
}
public void run()
{
try{
strReceive=in.readUTF();
strWhichService=strReceive.substring(0,2);
//分离出用户向服务器发送子串的前两个字符,这个字符标志着用户请求的服务种类。
[] if(strWhichService.equals(“/r”)) intType=1;//请求注册服务。
else if(strWhichService.equals(“/s”) intType=2;//请求查询分数服务。
[] else if(strWhichService.equals(“/5”) intType=3;//请求五子棋服务。
……//请求其它服务(略)
switch(intType)
{
case 1: newUser();break;
case 2: findByGradeByUserID();break;
case 3: playWuzi();break;
default 0:displayError();break;
}
[] }catch(IOException e){}
finally
{
try{
rSocket.close();
}catch(IOException e){}
}
}
…………//(略)
}


http:///tech/article790.html
</td></tr></table></td> </tr> <tr> <td background="/pic/split.gif" height=1></td> </tr> <tr> <td class="tdMargin1">
↑返回目录
前一篇: 用Java自制手机联网游戏(2)
后一篇: Java活动图像程序和游戏编写(4)