动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.J2EE 和 .NET之间的对比.
.Hibernate实践JBX+MY SQL4.0.
.JDBC基础.
.java基础问题请教!.
.灵活使用EJB的本地和远程接口(四).
.使用 EJB 组件你需要了解些什么呢.
.基本对象池的使用.
.Java入门及faq__1(4).
.J2EE与IBM对象关系数据库(1).
.lastIndex 属性.
.Java与XML联合编程之SAX篇.
.qmail的配置.
.浅谈Java中this的使用.
.Mini Java编译器(四).
.J2SE中的序列化详解(二).
.use itext create a PDF file.
.Java程序设计.
.Java究竟是什么?.
.Spring中的Template和Callback模.
.Java咖啡馆(3)——Eclipse.

用Java自制手机联网游戏

发表日期:2008-1-5 |



  移动通信的迅速发展,使手机用户越来越多。手机制造商诺基亚曾宣称,计划在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所示。
   用Java自制手机联网游戏(图一)
  图1 J2ME的构架1
   用Java自制手机联网游戏(图二)
  图2 J2ME的构架2
  程序运行的环境
  客户端即为手机(需支持J2ME的手机,例如motorola 388)用户,编程环境是windows 2000 server + MotoJ2SDK+JDK1.3.1+MS SQL server2000,服务器端为Windows 2000 server+JDK1.3.1。
  J2ME编程流程
  以MotoJ2SDK的开发过程为例,其流程如下所示:
   用Java自制手机联网游戏(图三)
  图3 J2ME编程流程
  程序简介
  服务器端代码的编写
  客户端和服务器端采用Socket连接。服务器端需要时刻监听客户的请求(如图4),一旦有客户需求,它就需要马上响应(如图5),并做出相应的处理,然后将结果返回给客户,客户显示服务器处理结果(如图10)。
   用Java自制手机联网游戏(图四)
  图4 服务器监听8000端口
   用Java自制手机联网游戏(图五)
  图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){}
   }
   }
  …………//(略)
  }
  由于手机端硬件的限制,所以,复杂的查找和处理都由配置较好服务器端处理。这样手机端可以减轻负担,专职处理界面的美观,以赢取客户的喜爱。例如,手机用户提出查分数请求时,手机向服务器发出请求“/s:user”。服务器接收到该子串,首先分离为“/s”和“user”,“/s”表示查询分数,“user”表示用户的ID。这时服务器端就调用findByGradeByUserID(),该函数利用JDBC连接数据库查询用户成绩,并将查询结果发送给客户端。
  手机端编程
  手机端的编程其实是MIDlet编程。MIDlet的程序流程是这样的:构造函数→startApp()→监听事件、接收命令→commandAction()方法→调用别的方法→假如是exit()命令调用pauseApp()→destroyApp()方法。以图形表示MIDlet的生命周期如图6所示。实际上,MIDlet程序的运行流程和Applet程序的运行流程差不多。
   用Java自制手机联网游戏(图六)
  图6 生命周期
  
  手机端程序举例如下:
  
  import javax.microedition.lcdui.*;//用户界面包,主要用户构建用户的程序界面。
  import javax.microedition.midlet.*;//MIDlet类。
  import javax.microedition.io.*;//网络IO包。
  ……
  public class MobileMIDlet extends MIDlet implements CommandListener
  {
   ……//一些变量的声明(略)。
   MobileMIDlet()
   {
   myDisplay = Display.getDisplay(this) ;
   }
   protected void startApp() throws MIDletStateChangeException
   {
  
   ……//一些变量的初始化。
   myDisplay.setCurrent(funcSelected);//设置当前显示界面为用户功能选择界面(图7)
   }
   ……
   public void commandAction(Command c,Displayable d)
   {
   if (d == funcSelected)//用户在主界面选择。
   {
  switch (((List)d).getSelectedIndex())
  {
   case 0://用户选择了游戏功能。
   myCanvas = new ClientCanvas();
   myDisplay.setCurrent(myCanvas);
   break;
   case 1://用户选择了查询。
   myDisplay.setCurrent(SearchForm);
   break;
   ……//其它选择略。
  }
  }else if(d==SearchForm)
  {
  if(c==okCommand){//假如用户点击了发送按钮(图9)。
  try{
  SendAndWaitAndDisplay();
  //开始发送用户填写的资料,同时显示等待界面。
  一旦接收到服务器发送过来的查询结果,则分析并且在手机上显示查询。
  }catch(IOException e)
  {
   System.out.println(“error!”);}
  }
  }
  ……//略去其它处理
   }
   }//class
   用Java自制手机联网游戏(图七)
  图7 功能选择界面图8 手写输入图9 提交查询
  从以上程序段可以看出,手机端的程序主要是控件的部署和简单按钮动作的处理。由于手机硬件限制,手机端不可能进行复杂的操作,所以,对于数据库等类型的操作应该尽量放在服务器端处理,以减轻用户负担。
  数据的发送与接收
  利用服务器端和客户端建立的输入、输出流,可以轻松实现数据的在客户端和服务器端的收发工作。
  用Java自制手机联网游戏(图八)
  图10 查询结果图11 联网游戏
  程序段举例如下:
  is = new DataInputStream(rSocket.getInputStream());//建立输入输出流。
  os = new DataOutputStream(rSocket.getOutputStream());
  ……
  //数据发送
  try
  {
   os.writeUTF(sendMsg);//sendMsg为String类。用UTF编码发送数据.
   os.flash();
  }catch(IOException e)
  {
   System.out.println(“Send msg error! ”);};
  ……
  //数据接收
  try
  {
   recMsg=in.readUTF();//将信息读入String recMsg中。
  }catch(IOExcetpion e)
  {
   System.out.println(“Recevie msg error!”);
  }
  移动通信的迅速发展、手机用户骤然增加,必然使手机软件成为一个巨大的市场。与一般软件相比,更有发展潜力的网络游戏必然更具有开发潜力。利用本文介绍的程序可以构建一个手机联网游戏城,就像联众一样。不过连入的客户端不再是沉重的、移动不方便的PC,而是轻便的手机。
上一篇:Java手机,好一场龙争虎斗 人气:272
下一篇:Push信息自动启动JAVA移动程序 人气:424
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号