J2ME網絡編程以及網絡游戲的實現(xiàn)2_第1頁
J2ME網絡編程以及網絡游戲的實現(xiàn)2_第2頁
J2ME網絡編程以及網絡游戲的實現(xiàn)2_第3頁
J2ME網絡編程以及網絡游戲的實現(xiàn)2_第4頁
J2ME網絡編程以及網絡游戲的實現(xiàn)2_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

J2ME(Java2MicroEdition)是Java2的一個組成部分,是一種高度優(yōu)化的Java運行環(huán)境,主要針對消費類電子設備的,例如蜂窩電話、可視電話、數字機頂盒和汽車導航系統(tǒng)等等。即J2ME是為消費電子產品和手持設備量身定制的Java專用版本。

J2ME的出現(xiàn)使開發(fā)跨平臺的消費類電子產品的應用軟件成為可能。Java語言的與平臺無關的特性移植到小型電子設備上,允許移動無線設備之間共享應用程序。它提供了基于HTTP的高級Internet協(xié)議,使移動電話能以Client/Server方式直接訪問Internet的全部信息,從而使得不同的Client訪問不同的資源。

隨著網絡技術的發(fā)展,在將來的無線通信時代中,大量的網絡應用程序將被開發(fā)出來去滿足無線移動通訊的要求,而要充分的發(fā)揮無線移動通訊設備的通信能力,J2ME網絡編程就變得尤為重要。

一、使用Tomcat搭建Web服務器

絕大多數的網絡應用都是將數據信息保存到DBServer(數據庫服務器),通過WebServer協(xié)調各種客戶端的請求與響應,存取數據庫中的數據。數據庫服務器和Web服務器可能是網絡中的1臺或多臺的設備;客戶端可以通過網際中的通用協(xié)議(如http協(xié)議)對服務器端進行訪問,客戶端或者是pc上的web瀏覽器,或者是移動設備,只要能支持網絡通訊的協(xié)議就應該能夠正確獲取服務器端的資源。

我們首先介紹一下使用Tomcat搭鍵web服務器,在安裝Tomcat5。0之前首先要下載

j2sdk、Tomcat5.0的安裝文件

第1步安裝j2sdk進入歡迎畫面

第2步接受相關協(xié)議條款,然后選擇Next

第3步選擇安裝路徑,默認為c:\j2sdk1.4.2_05,這里我們不變,選擇Next,(這個路徑很重要,如果我們改變了,一定要記住)。

第4步系統(tǒng)會自動拷貝文件

第5步安裝完成單擊finish。

第6步安裝Tomcat5.0,首先進入歡迎界面,單擊Next。

第7步接受相關協(xié)議條款,然后選擇Next

第8步選擇完全安裝Full,然后選擇Nextt安裝界面2

第9步確定安裝目錄,這里我們確定為C:Tomcat5.0,然后選擇Next

第10步確定Web服務器管理員的用戶名和密碼以及默認的端口,,然后選擇Next

用戶名admin

密碼123(要記住該密碼用于對服務器的各種管理)

默認端口8080

第11步確定java虛擬機的所在路徑,,然后選擇Next

路徑C:\j2sdk1.4.2_05(和我們之前安裝JDK的路徑要一致)

第12步系統(tǒng)自動拷貝文件。

第13步安裝完成,系統(tǒng)提示是否馬上運行,單擊Finish,我們會在屏幕的右下角看到Tomcat5.0的小圖標。

第14步雙擊屏幕右下角Tomcat5.0圖標,系統(tǒng)會彈出Tomcat運行窗口,在這個窗口中單擊Start開啟服務,到此Tomcat5.0安裝完成,可以通過再Web瀏覽器中輸入:8080/檢測到歡迎的畫面

安裝完成Tomcat以后,下面的工作就是要把磁盤上的文件夾共享為互聯(lián)網中的虛擬目錄,用于客戶端的訪問。我們在D:創(chuàng)建如下的文件夾結構:

D:mygameWeb(這個目錄將作為對外部的虛擬目錄用來存放共享的各種資源)

在瀏覽器中單擊頁面左上第三項TomcatManager,這是系統(tǒng)會彈出一個窗口要求我們輸入Tomcat管理的用戶名和密碼,輸入用戶名admin密碼123后,按確定進入Web服務器管理頁面。

在管理界面中的Deploy面板我們輸入以下信息:

ContextPath(optional):/515game(虛擬目錄的名稱)

XMLConfigurationfileURL:

WARorDirectoryURL:file:d:/mygameWeb(真實的文件夾注意格式和大小寫不要錯)

填寫完成以后單擊Deploy發(fā)布虛擬目錄

大功告成,我們可以把資源放到d:mygameWeb這個目錄下面通過

http://ip/地址:8080/515game/資源名稱就可以訪問這個服務器上的資源了,

如::8080/515game/myweb.html

:8080/515game/kk.wav

假如這臺主機在公網的IP地址為1在互聯(lián)網中可以過以下地址來訪問:

1:8080/515game/myweb.html

1:8080/515game/kk.wav

在j2me中提供了訪問網絡的相關類,封裝到了javax.microedition.io里面提供了相關類,下面我們通過實例介紹如果通過GCF來讓j2me的客戶端獲取Web服務器緞的資源

二、從Web獲取文字信息

importjavax.microedition.midlet.*;

importjavax.microedition.io.*;

importjava.io.*;

importjavax.microedition.lcdui.*;

publicclassgetHttp

extendsMIDlet{

publicvoidstartApp(){

try{

//打開網絡連接

Stringurl="/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獲取圖片信息

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

importjavax.microedition.io.*;

importjava.io.*;

publicclasstestPic

extendsMIDlet{

publicvoidstartApp(){

try{

//打開網絡連接

Stringurl="/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){}

}

四、從Web獲取多媒體信息

importjavax.microedition.lcdui.*;

importjavax.microedition.midlet.*;

importjavax.microedition.io.*;

importjava.io.*;

importjavax.microedition.media.*;

publicclassgetMusic

extendsMIDlet{

publicvoidstartApp(){

try{

//打開網絡連接

Stringurl="/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){}

}

五、基于http的用戶登陸系統(tǒng)實現(xiàn)

服務器端程序

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="/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){}

}

}

六、一個網絡游戲實例

下面我們通過一個網絡猜價格的游戲實例來說明如何通過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);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論