|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.编程|收集 弁言
J2ME(Java2MicroEdition)是Java2的一个构成部分,是一种高度优化的Java运转情况,次要针抵消费类电子设备的,比方蜂窝德律风、可视德律风、数字机顶盒和汽车导航体系等等。即J2ME是为消耗电子产物和手持设备量身定制的Java公用版本。
J2ME的呈现使开辟跨平台的消耗类电子产物的使用软件成为大概。Java言语的与平台有关的特征移植到小型电子设备上,同意挪动无线设备之间共享使用程序。它供应了基于HTTP的初级Internet协定,使挪动德律风能以Client/Server体例间接会见Internet的全体信息,从而使得分歧的Client会见分歧的资本。
跟着收集手艺的开展,在未来的无线通讯时期中,大批的收集使用程序将被开辟出往复满意无线挪动通信的请求,而要充实的发扬无线挪动通信设备的通讯才能,J2ME收集编程就变得尤其主要。
1、利用Tomcat搭建Web服务器
[img=372style=,243alt=]http://www.alixixi.com/UploadPic/2007-7/20077711230692.bmp[/img]
收集使用模子
尽年夜多半的收集使用都是将数据信息保留到DBServer(数据库服务器),经由过程WebServer和谐各类客户真个哀求与呼应,存取数据库中的数据。数据库服务器和Web服务器多是收集中的1台或多台的设备;客户端能够经由过程网际中的通用协定(如http协定)对服务器端举行会见,客户端大概是pc上的web扫瞄器,大概是挪动设备,只需能撑持收集通信的协定就应当可以准确猎取服务器真个资本。
我们起首先容一下利用Tomcat搭键web服务器,在安装Tomcat5。0之前起首要下载
j2sdk、Tomcat5.0的安装文件
要筹办的安装文件
第1步安装j2sdk进进接待画面
j2SE安装界面1
第2步承受相干协定条目,然后选择Next
j2SE安装界面2
第3步选择安装路径,默许为c:j2sdk1.4.2_05,这里我们稳定,选择Next,(这个路径很主要,假如我们改动了,必定要记着)。
j2SE安装界面3
第4步体系会主动拷贝文件
[img=432style=,325alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231632.JPG[/img]
j2SE安装界面4
第5步安装完成单击finish。
j2SE安装界面5
j2SE安装以后的目次布局
第6步安装Tomcat5.0,起首进进接待界面,单击Next。
[img=430style=,325alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231694.JPG[/img]
Tomcat安装界面1
第7步承受相干协定条目,然后选择Next
0Tomcat安装界面2
第8步选择完整安装Full,然后选择Next
[img=439style=,337alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231238.JPG[/img]
1Tomcat安装界面3
第9步断定安装目次,这里我们断定为C:Tomcat5.0,然后选择Next
[img=429style=,329alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231284.JPG[/img]
2Tomcat安装界面4
第10步断定Web服务器办理员的用户名和暗码和默许的端口,,然后选择Next
用户名admin
暗码123(要记着该暗码用于对服务器的各类办理)
默许端口8080
[img=417style=,318alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231923.JPG[/img]
3Tomcat安装界面5
第11步断定java假造机的地点路径,,然后选择Next
路径C:j2sdk1.4.2_05(和我们之前安装JDK的路径要分歧)
4Tomcat安装界面6
第12步体系主动拷贝文件。
5Tomcat安装界面7
第13步安装完成,体系提醒是不是即刻运转,单击Finish,我们会在屏幕的右下角看到Tomcat5.0的小图标。
6Tomcat安装界面7
第14步双击屏幕右下角Tomcat5.0图标,体系会弹出Tomcat运转窗口,在这个窗口中单击Start开启服务,到此Tomcat5.0安装完成,能够经由过程再Web扫瞄器中输出http://127.0.0.1:8080检测到接待的画面
[img=368style=,347alt=]http://www.alixixi.com/UploadPic/2007-7/20077711232116.JPG[/img]
7Tomcat安装界面8
8Tomcat接待画面
安装完成Tomcat今后,上面的事情就是要把磁盘上的文件夹共享为互联网中的假造目次,用于客户真个会见。我们在D:创立以下的文件夹布局:
D:mygameWeb(这个目次将作为对内部的假造目次用来寄存共享的各类资本)
[img=500style=,421alt=]http://www.alixixi.com/UploadPic/2007-7/20077711232959.JPG[/img]
9假造目次布局
在扫瞄器中单击页面左上第三项TomcatManager,这是体系会弹出一个窗口请求我们输出Tomcat办理的用户名和暗码,输出用户名admin暗码123后,按断定进进Web服务器办理页面。
0用户办理上岸窗口
[img=603style=,426alt=]http://www.alixixi.com/UploadPic/2007-7/20077711232130.JPG[/img]
1Tomcat办理窗口
在办理界面中的Deploy面板我们输出以下信息:
ContextPath(optional):/515game(假造目次的称号)
XMLConfigurationfileURL:
WARorDirectoryURL:file:d:/mygameWeb(实在的文件夹注重格局和巨细写不要错)
填写完成今后单击Deploy公布假造目次
半途而废,我们能够把资本放到d:mygameWeb这个目次上面经由过程
http://IP地点:8080/515game/资本称号就能够会见这个服务器上的资本了,
如:http://127.0.0.1:8080/515game/myweb.html
http://127.0.0.1:8080/515game/back0.png
http://127.0.0.1:8080/515game/kk.wav
假设这台主机在公网的IP地点为221.196.125.11在互联网中能够过以下地点来会见:
http://221.196.125.11:8080/515game/myweb.html
http://221.196.125.11:8080/515game/back0.png
http://221.196.125.11:8080/515game/kk.wav
在j2me中供应了会见收集的相干类,封装到了javax.microedition.io内里供应了相干类,上面我们经由过程实例先容假如经由过程GCF来让j2me的客户端猎取Web服务器缎的资本。
<P> 2、从Web猎取笔墨信息
importjavax.microedition.midlet.*;
importjavax.microedition.io.*;
importjava.io.*;
importjavax.microedition.lcdui.*;
publicclassgetHttp
extendsMIDlet{
publicvoidstartApp(){
try{
//翻开收集毗连
Stringurl="http://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){}
}
3、从Web猎取图片信息
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
importjavax.microedition.io.*;
importjava.io.*;
publicclasstestPic
extendsMIDlet{
publicvoidstartApp(){
try{
//翻开收集毗连
Stringurl="http://127.0.0.1/515game/back0.png";
StreamConnectionsc=(StreamConnection)Connector.open(url);
//猎取图片
InputStreamis=sc.openInputStream();
Imageim=Image.createImage(is);//该办法为MIDP2.0办法
Formf=newForm(url);
f.append(im);
Display.getDisplay(this).setCurrent(f);
//封闭毗连
sc.close();
}
catch(Exceptione){}
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
}
4、从Web猎取多媒体信息
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;
importjavax.microedition.io.*;
importjava.io.*;
importjavax.microedition.media.*;
publicclassgetMusic
extendsMIDlet{
publicvoidstartApp(){
try{
//翻开收集毗连
Stringurl="http://127.0.0.1/515game/kk.wav";
StreamConnectionsc=(StreamConnection)Connector.open(url);
//猎取声响
InputStreamis=sc.openInputStream();
Playerp1=Manager.createPlayer(is,"audio/x-wav");
p1.start();
//封闭收集毗连
sc.close();
System.out.println("soundisplay");
}
catch(Exceptione){
e.printStackTrace();
}
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
}
5、基于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
{
out.print("passworderror");
}
}
else
{
out.print("usernameerror");
}
%>
客户端程序
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
importjavax.microedition.io.*;
importjava.io.*;
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);
Display.getDisplay(this).setCurrent(f);
}
publicvoidstartApp(){}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
publicvoidcommandAction(Commandc,Displayabledd){
Threadt=newThread(this);
t.start();//启动线程保持收集
}
//完成收集哀求
publicvoidrun(){
try{
//翻开收集
Stringurl="http://127.0.0.1/515game/checkuser.jsp?username="+
user.getString()+"&password="+pass.getString();
//猎取数据
StreamConnectionsc=(StreamConnection)Connector.open(url);
InputStreamis=sc.openInputStream();
inttmp=0;
Stringget="";
while((tmp=is.read())!=-1){
get=get+(char)tmp;
}
Formf2=newForm("上岸了局");
f2.append(get);
Display.getDisplay(this).setCurrent(f2);
//封闭收集
sc.close();
}
catch(Exceptione){}
}
}
6、一个收集游戏实例
上面我们经由过程一个收集猜代价的游戏实例来讲明怎样经由过程J2me同服务器端互换数据。
这是一个收集版商品竞猜的实例,客户端输出商品代价,在服务器端卖力游戏逻辑的处置。
服务器端代码:
Guess.jsp这个文件放到d:/mygameWeb目次上面
<%
Stringsjg=request.getParameter("jg");
intjg=(int)(Math.random()*10);
intuserjg=Integer.parseInt(sjg);
if(userjg>jg)
{
out.println("sorrydale");
}
if(userjg<jg)
{
out.println("sorryxiaole");
}
if(userjg==jg)
{
out.println("right");
}
%>
J2me客户端代码:
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
importjavax.microedition.io.*;
importjava.io.*;
publicclassGuessGame
extendsMIDlet
implementsCommandListener,Runnable{
publicFormf,f2;
publicTextFieldtf1;
publicDisplayd;
publicCommandc1,c2;
publicGuessGame(){
f=newForm("商品竞猜");
f2=newForm("竞猜了局");
c2=newCommand("前往",Command.SCREEN,1);
f2.addCommand(c2);
f2.setCommandListener(this);
tf1=newTextField("请输出商品代价1-9","",1,TextField.NUMERIC);
f.append(tf1);
c1=newCommand("断定",Command.SCREEN,1);
f.addCommand(c1);
f.setCommandListener(this);
d=Display.getDisplay(this);
}
publicvoidstartApp(){
d.setCurrent(f);
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
publicvoidcommandAction(Commandc,Displayabled){
if(c==c1){//启动收集哀求
(newThread(this)).start();
}
if(c==c2){
this.d.setCurrent(f);
}
}
publicvoidrun(){
try{
//翻开收集毗连
Stringurl="http://127.0.0.1/515game/Guess.jsp?jg="+tf1.getString();
StreamConnectionsc=(StreamConnection)Connector.open(url);
//猎取哀求了局
InputStreamis=sc.openInputStream();
inttmp=0;
Stringget="";
while((tmp=is.read())!=-1){
get=get+(char)(tmp);
}
for(inti=0;i<f2.size();i++){
f2.delete(i);
}
f2.append(get);
d.setCurrent(f2);
//封闭收集毗连
sc.close();
}
catch(Exceptione){}
}
}
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。 |
|