Java的網路功能與程式設計 一 (轉)

worldblog發表於2007-12-06
Java的網路功能與程式設計 一 (轉)[@more@]的功能與
徐迎曉
(上海大學計算中心25#)
 
摘 要:Java語言是Inte上最熱門的程式語言,本文針對

 Java的網路功能,對Java從網路上獲取圖象、、

 HTML文件及文字等程式設計方法作了初步的介紹,同

 時介紹了動態獲取網路上資源的方法作了介紹。文中

 提供了大量簡明易懂的例項。

關鍵詞:Java;Internet;網路



 Java語言是Internet上新興的程式語言,對Java的特性以及基

本的程式設計方法已有很多文章作過介紹。但是,廣大Java愛好者更希望

瞭解Java更深一步的程式設計方法,本文就Java的網路功能及其程式設計方法

作一初步的介紹。

 為了方便初次接觸Java的讀者,本文先就Java程式設計的一些常識

作簡單介紹。



 一、Java程式設計簡介



 1. 程式設計環境:



 對於大部分讀者,以下的是較為經濟的一種選擇:

操作 Win95

編譯 1.01

瀏覽軟體 2.0以上(32位)



 2. 程式設計方法:



 先用文字編輯器如Edit、NotePad等輸入Java,以.java為

檔名字尾存檔。

 再命令列:“Javac 檔名”來編譯Java程式。編譯後生成

字尾為.class的位元組碼檔案。

 最後,如果是Java Applitcation,則執行命令列:“Java 字

節碼檔名”來執行Java程式。

 如果是Java Applet,則用文字編輯器輸入該Java Applet

的HTML 文件, 以 .htm 為檔名字尾存檔。 再執行命令列:

“appletviewer HTML檔名”來執行Java Applet。或用Netscape

開啟該HTML文件。



 3. 關於本文中程式的說明



 為了使程式能夠最簡潔地體現其所代表的程式設計方法,本文中的程

序一般採用最簡單的形式,省略了執行緒等內容。因此,本文的程式不

是“好”的程式,但最容易為初學者理解。

 本文的所有程式經編譯後,生成的位元組碼檔案及對應的HTML文件

已上載到~xyx/test/jvnet, 均可正確

執行。連入Internet的讀者可用開啟該地址,檢視執行效果。

 連入Internet的讀者也可以在本地輸入並編譯本文的程式,

用Netscape的File/Open File選單開啟HTML文件,體會程式設計方法並

檢視執行效果。如果讀者想將Java Applet 放到自己的主機上或其他

上,在Netscape中用或ftp協議呼叫,出於

性限制,應作如下修改:

 如果讀者在某個WWW主機上有帳號,可以做個人Homepage(一般

在根目錄建立WWW或public_html目錄即可,Homepage的地址為

~個人帳號),可將本文程式中對應的

~xyx/部分修改為讀者自己的結點地址,

然後將編譯後生成的位元組碼檔案及對應的HTML文件上載到自己的結點上。

 如果讀者的連入了Internet,也可以找一個可以上載的

ftp結點,如:ftp://ftp.shnet.edu.cn/incoming,將本文程式中

對應的~xyx/部分修改為ftp結點的地址,

將編譯後生成的位元組碼檔案及對應的HTML文件上載到該結點上,以查

看執行效果。

 如果讀者的計算機沒有聯網,也可以在單機上執行Web 服務軟

件如Websfor Win95,將本文程式中對應的http: //www. shu

.edu.cn/~xyx/部分修改為“http://本地”的形式,來模擬

網路程式設計。



 二、Java網路功能及獲取網路上資源的一般步驟



 Java程式可以獲取網路上結點的圖象、聲音、HTML文件及文字

等資源,並可以對獲得的資源進行處理。例如Java程式可以每隔一

定時間讀取某結點提供的最新資料,並以圖表的形式顯示出來。

 在程式設計處理上,一般先生成一個URL型別的,然後用 Java

中相應的方法(method)獲取該物件所代表的資源。下面分別介紹

Java網路功能的幾個例子,並由此介紹幾種不同的程式設計方法。



 三、從網路上獲取圖象



 Java Applet可以直接從網路上結點獲取圖象並顯示出來。 為

了了解其程式設計方法和從本地顯示圖象的程式設計有何不同,我們先不考慮

網路功能,來看一個簡單的圖象顯示的例子:



●程式1

import java.applet.*;

import java.awt.*;

public class imag0 extends Applet{

 Image image;

 public void init() {

image=getImage(getDocumentBase(),"test.gif");

 }

 public void paint(Graphics g) {

 g.drawImage(image, 0, 0,this);

 }

}



 這是一個最簡單的獲取並顯示圖象的例子, 在該例中, 先用

getImage(getDocumentBase(),圖象檔名)從HTML文件所在位置調

用圖象test.gif,並由此生成一個Image型別的物件image, 然後用

drawImage(image, 0, 0,this)在螢幕上將圖象顯示出來。

 如果想從網路上其他結點獲取圖象,關鍵是建立對應於網路上

其他結點的Image型別的物件,一旦獲得Image型別的物件獲得了,

便可以對其進行任何可能的圖象操作。

 Java提供瞭如下方法可以建立對應於其他結點的圖象:

getImage(new URL(字串))

 其使用格式可有兩種:



 String url = "結點URL";

 Image image;

 try {

 image = getImage(new URL(url));

 }

catch(Exception e){

System.out.println("Can't open the URL ");

 }







URL imgur=null;

Image image;

try {

 imgur=new URL("結點URL ");

 }

 catch (MalformedURLException e) {

 System.out.println("Can't open the URL ");

 }

 image=getImage(imgur);



 前一種格式用“new URL(url)”生成 URL 物件, 並直接作為

getImage的引數,後一種格式先用“new URL(url)”生成一個 URL

物件,再傳給getImage。兩種格式本質上是一樣的。兩種格式中,

生成URL物件的部分都包含在



try{

獲取URL物件

 }

catch (MalformedURLException e) {

出錯提示

 }

中。

 例如要呼叫~xyx/img/shnet.jpg結點

的圖象,第一種格式完整的程式如下:

●程式2

import java.applet.*;

import java.net.*;

import java.awt.*;

public class imag extends Applet{

 Image image;

 public void init() {

 String url = "~xyx/img/shnet.jpg";

 try {

 image = getImage(new URL(url));

 } catch(Exception e){}

 }



 public void paint(Graphics g) {

 g.drawImage(image, 0, 0,this);

 }

}



 第二種格式完整的程式如下:

●程式3

import java.applet.*;

import java.net.*;

import java.awt.*;

public class imag2 extends Applet{

 Image image;

 URL imgur=null;

 public void init() {

 try {

 imgur=new URL("~xyx/img/shnet.jpg");

 }

 catch (MalformedURLException e) {



 System.out.println("Can't open the URL ");

 }

 image=getImage(imgur);

 }

 public void paint(Graphics g) {

 g.drawImage(image, 0, 0,this);

 }

}



 將上述兩個程式分別以imag.java和imag2. java 存檔, 執行

javac imag.java和javac imag2.java,將得到編譯後生成的imag

.class和imag2.class,最後建立呼叫這兩個Java Applet的HTML文

檔,如imag.class對應的HTML文件可如下:

< html >

< head >

< title >Example < /title >

< /head >

< center >

< applet code=imag.class width=550 height=250 >

< /applet >

< /html >



 將該HTML文件存入test.html檔案,用Netscape開啟, 如果你

的計算機連入了Internet,便可以看到Java Applet 所顯示的從網

絡上獲得的圖象了。(對於本文中其他不同的Java Applet, 對應

的HTML文件只要修改其中相應的“code=imag.class”即可。)



 四、從網路上獲取聲音



 Java從網路上獲取聲音檔案並聲音的程式設計方法有兩類,一

是利用Java提供的play(URL)及play(URL,String) 直接播放網路

上的聲音檔案,另一類是透過getAudioClip(URL)或getAudioClip

(URL,String)先從網路上獲取聲音檔案,並生成AudioCl型別的

物件,然後對該物件進行操作。

 前者的使用格式是:



String Audur = "結點URL";

 try {

 play(new URL(Audur)); 

 } catch(Exception e){}







String Audur = "結點URL";

 try {

 play(new URL(Audur),聲音檔名);

 } catch(Exception e){}

 後者使用的格式是:

String Audur = "結點URL";

AudioClip lClip;

 try {

 loopClip = getAudioClip(new URL(Audur));

 }

catch(Exception e){

System.out.println("Can't open the URL ");

 }







String Audur = "結點URL";

 AudioClip loopClip;

 try {

 loopClip = getAudioClip(new URL(Audur) ,聲音檔名);

 }

catch(Exception e){

System.out.println("Can't open the URL ");

}



 上面的四種格式都是將生成URL物件部分--“new URL(url)”

直接作為play或getAudioClip的引數;和前面處理圖象的例子一樣,

也可以先用“new URL(url)”獲取一個URL物件, 再傳給 play 或

getAudioClip。如對第一種play(URL)的格式, 也可採用如下的編

程格式:

URL Audur =null;

 try {

 Audur=new URL("結點URL ");

 } catch(Exception e){

System.out.println("Can't open the URL ");

 }

 play(Audur);

 下面對前述四種從網路上獲取並播放聲音檔案的格式各舉一簡單的例子,

以作程式設計時參考:

 ●程式4 格式一

import java.applet.*;

import java.awt.*;

import java.net.*;

public class sound1 extends Applet



{ AudioClip loopClip;

 public void paint(Graphics g) {

 String Audur = "~xyx/java/Animator/audio/bark.au";

 try {

 play(new URL(Audur)); 

 } catch(Exception e){}

 }

}



 ●程式5 格式二

import java.applet.*;

import java.awt.*;

import java.net.*;

public class sound2 extends Applet

{ AudioClip loopClip;

 public void paint(Graphics g) {

 String Audur = "~xyx/java/Animator/audio/";

 try {

 play(new URL(Audur),"bark.au");

 } catch(Exception e){}

 }

}



 ●程式6 格式三

import java.applet.*;

import java.awt.*;

import java.net.*;

public class sound extends Applet{

 AudioClip loopClip;

 public void init() {

 String Audur = "~xyx/java/Animator/audio/bark.au";

 try {

 loopClip = getAudioClip(new URL(Audur));

 } catch(Exception e){}

 }



 public void paint(Graphics g){

 loopClip.loop();

 }

}



●程式7 格式四

import java.applet.*;

import java.awt.*;

import java.net.*;

public class sound0 extends Applet{

 AudioClip loopClip;

 URL auur;

 public void init() {

 try {

 auur=new URL("~xyx/java/Animator/audio/");

 }

 catch (MalformedURLException e) {

 System.out.println("Can't open the URL ");

 }

 loopClip = getAudioClip(auur,"bark.au");



 }



 public void paint(Graphics g){

 loopClip.loop();

 }

}



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989061/,如需轉載,請註明出處,否則將追究法律責任。

相關文章