本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7587096
建立时间:2006年5月29日




[J2ME][SNAP]实例讲解移动QQ在线平台
软件技术,  电脑与网络

lhwork 发表于 2006/5/31 14:54:57

[SNAP]实例讲解移动QQ在线平台 简单介绍SNAP Mobile的架构 编写者 日期 关键词 陈曦@exce4 2006- 4-15 SNAP Mobile API  Http  TCP  J2ME SNAP的概念 SNAP,即Scalable Network Application Package,翻译为可缩放的网络应用解决方案。 SNAP Mobile APIs是Nokia公司和SUN公司提供给全球众多移动游戏开发者的基于Nokia SNAP 移动平台(像N-Gage™ Arena.)和Sun Java Wireless Toolkit (version2.3)的一个功能强大的J2ME客户端的API开发包。在SNAP APIs中提供了基于可高效拓展服务的手机多人在线游戏的开发环境,可以使开发者很方便的为程序添加网络特性,比如注册、登陆、即时通信、多人在线游戏、认证、好友列表、聊天、游戏积分排行、用户帐户和个人信息等游戏特性,大大地简化进行手机多人在线游戏J2ME程序的开发工作。   SNAP Mobile具有三大特点: l         具有游戏社区功能(IMPS services) l         具有在线游戏功能(SNAP Game services) l         具有交流社区功能(Web services)   500)this.width=500'>  也就是说,你可根据你的项目特点有选择地进行开发。 商业应用示范 snapmobile给出了一些与nokia合作的手机游戏开发商的展示: http://snapmobile.nokia.com/n-gage/web/en/snapmobile/games.jsp Octopi Game Development Studio也有很好的示范,你可以浏览 wapapps0.163.com/wap/OTASetting.jsp?type=all">http://www.octopi.com/snap.htm 从那里你能得到一个很好的概念。 到底SNAP Mobile是什么? 对于移动游戏开发者来说,它其实就是多人在线游戏的开发工具。通过它你可以实现手机注册、登陆、进入游戏大厅或者游戏房间进行多种模式的游戏对战。   它的构架是这样的:   500)this.width=500'>  对于客户端移动游戏开发者来说,只要实现了客户端访问到服务器,能发出请求,完成登陆、接收信息以及其他的一些社区功能而后登出服务器的话,基本就完成客户端的开发。 500)this.width=500'> 在Nokia的产业链中,整个开发运作流程是这样的:   500)this.width=500'>  可以看到Nokia有一整套规范的操作流程和成熟的商业运作模式。想了解得更多的话,可以自己仔细查询: http://snapmobile.nokia.com/n-gage/web/en/snapmobile/process.jsp   只要与Nokia提供的服务器端模拟器完成上述功能,就可以进行SNAP Mobile开发,而不需要在真实的通讯网络里完成。这就大大节约了开发成本,提高效率,也使开发者能回到核心业务,集中精力在游戏开发上,而不需要再费过多的资源关注通讯的细节。     我们下面具体讲解一下SNAP客户端登陆模拟服务器的示例。 简单的登陆示例 下载开发工具: 1。下载SNAP Mobile Client SDK: http://www.forum.nokia.com/main/0,6566,034-1021,00.html 2。下载Sun Java Wireless Toolkit 2.3 Beta: http://java.sun.com/products/sjwtoolkit/download-2_3.html (注意,必须要求用Sun Java Wireless Toolkit 2.3。安装它时候,虽然出现的还是WTK2.2版本字样,但不要怀疑。启动时它的界面不再是黄、红、蓝的强势界面,而且友好的浅蓝界面。) 安装完成后,接着就是启动WTK2.3,新建一个项目。例如: 新建 SNAPTest 项目,Midlet的类名为 test.HelloWorld。保持原来的默认设置,其他的可选包都不用选择。 在设置的外部api包 External  APIs里面会看到一个 sm-ui-api.jar的选项,还有一个Bundle的选项,都打上勾。 500)this.width=500'>  然后在安装SNAPMobile的目录下找到 samples文件夹,把samples\HelloWorld\src 目录下的 test 文件复制到WTK2.3的文件夹 WTK2.3\apps\SNAPTest\src目录下   然后打开设置在权限许可 Permission的地方添加访问权限的API: MIDlet-Permissions: javax.microedition.io.Connector.socket MIDlet-Permissions:javax.microedition.io.Connector.http   接着是设置用户自定义 User Defined  ,在里面添加连接信息:   SNAP-Mobile-Host: localhost         SNAP-Mobile-Port: 8080         SNAP-Mobile-Protocol: http         username: test1         password: test       500)this.width=500'>   在安装SNAPMobile的目录下找到 lib 文件夹,把 sm-api.jar复制到WTK2.3\apps\SNAPTest\lib目录下。然后编译生成。   启动安装SNAPMobile的目录下SNAPMobile\tools\ServerEmulator的服务器端模拟器 emu.bat,会出现一个DOS运行框,里面有发布信息,然后再运行客户端的模拟器,就会出现欢迎信息,完成登陆。   500)this.width=500'>  可能看完这个示例后,你对SNAP Mobile 有了一个初步的概念。下面我们再深入一点地介绍整个SNAP Moile的构架和实现。   通过以下HelloWorld.java的主要部分代码:   HelloWorld.java   public class HelloWorld extends MIDlet implements Runnable, SnapEventListener {     /***开始运行***/     public void startApp() {                        /***初始化获取访问权限***/         protocol = getAppProperty("SNAP-Mobile-Protocol");         hostname = getAppProperty("SNAP-Mobile-Host");         port = Integer.parseInt(getAppProperty("SNAP-Mobile-Port"));         username = getAppProperty("username");         password = getAppProperty("password");         gameClassID = 49152;         thread = new Thread(this);         thread.start();           }     /***线程运行***/     public void run() {                            try {   /***创建服务器连接对象(主机名,端口号,协议)***/               comm = new ServerComm(hostname, port, protocol);            /***添加snap事件监听器到该对象***/             comm.addSnapEventListener(this);                /***统一登陆SNAP,IMPS和Web 服务器(用户名,密码,游戏类ID,显示属性)***/                        comm.extendedLogin(username, password, gameClassID, null);                 /***发送信息***/                 comm.sendBuddyMessage(username, "Hello World!");             } catch (Exception e) {       }          /***该对象移除snap事件监听器***/          comm.removeSnapEventListener(this);           /***统一登出服务器***/              comm.unifiedLogout();     }        /***处理事件***/ public void processEvents(Vector list) {          ItemList il;              for (int i=0; i<list.size(); i++) {              /***获取所有来自服务器的信息***/           il = (ItemList)list.elementAt(i);           switch(il.getInteger("id")) {              case ItemList.IMPS_IM_MESSAGE:                console.println("- IMPS_IM_MESSAGE EVENT", Console.YELLOW);                console.println("  from id: " + il.getString("fromID"), Console.WHITE);                console.println("  from name: " + il.getString("fromName"), Console.WHITE);                console.println("  location: " + il.getString("location"), Console.WHITE);                console.println("  message: " + il.getString("message"), Console.WHITE);                if (username.equals( il.getString("fromName"))) {                 done = true;                 console.println("Message from ourself, done!", Console.WHITE);               } else {                  console.println("Message from someone else, not done.", Console.WHITE);                                  }               break;             }         }     } }   我们可以清楚地看到,Nokia已经在SNAPMobile里面已经封装好了连接接口和连接框架。让我们登陆SNAPMobile服务器成为一件很简单的事情。 (具体细节可以参考《SNAP_Mobile_HelloWorld_Tutorial_v1_0_en.pdf》的章节)   说到连接接口和连接框架咱们就不能跳过实现SNAP Mobile的通信协议。 Http和TCP SNAP Mobile规范里面明确写着支持Http和TCP协议:   l         Http 使用 8080 端口; l         TCP  使用 8976 端口;   Nokia的服务器端模拟器提供了修改相关协议、端口的命令。 说到这里不得不向各位说明一点,目前(从2006年3月20日至4月19止)Nokia官方论坛和snapmobile.nokia.com总共提供了两个性能不同的服务器端模拟器,各自针对的Demo。 SNAP Mobile SDK自带工具包里的ServerEmulator主要是针对samples\HelloWorld的演示,开发指南和


阅读全文(4233) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144756070 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号