Java的網路功能與編程 一
來源:互聯網
上載者:User
編程|網路 Java的網路功能與編程
徐迎曉
(上海大學計算中心25#)
摘 要:Java語言是Internet上最熱門的程式設計語言,本文針對
Java的網路功能,對Java從網路上擷取圖象、聲音、
HTML文檔及文字檔等編程方法作了初步的介紹,同
時介紹了動態擷取網路上資源的方法作了介紹。文中
提供了大量簡明易懂的執行個體。
關鍵詞:Java;Internet;網路
Java語言是Internet上新興的程式設計語言,對Java的特性以及基
本的編程方法已有很多文章作過介紹。但是,廣大Java愛好者更希望
瞭解Java更深一步的編程方法,本文就Java的網路功能及其編程方法
作一初步的介紹。
為了方便初次接觸Java的讀者,本文先就Java編程的一些常識
作簡單介紹。
一、Java編程簡介
1. 編程環境:
對於大部分讀者,以下的配置是較為經濟的一種選擇:
作業系統 Win95
編譯軟體 JDK1.01
瀏覽軟體 Netscape2.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文檔
已上傳到http://www.shu.edu.cn/~xyx/test/jvnet, 均可正確
運行。連入Internet的讀者可用瀏覽器開啟該地址,查看運行效果。
連入Internet的讀者也可以在本地硬碟輸入並編譯本文的程式,
用Netscape的File/Open File菜單開啟HTML文檔,體會編程方法並
查看運行效果。如果讀者想將Java Applet 放到自己的主機上或其他
ftp伺服器上,在Netscape中用http協議或ftp協議調用,出於安全
性限制,應作如下修改:
如果讀者在某個WWW主機上有帳號,可以做個人Homepage(一般
在使用者根目錄建立WWW或public_html目錄即可,Homepage的地址為
http://HostName/~個人帳號),可將本文程式中對應的
http://www.shu.edu.cn/~xyx/部分修改為讀者自己的Web結點地址,
然後將編譯後產生的位元組碼檔案及對應的HTML文檔上傳到自己的結點上。
如果讀者的電腦連入了Internet,也可以找一個可以上傳的
ftp結點,如:ftp://ftp.shnet.edu.cn/incoming,將本文程式中
對應的http://www.shu.edu.cn/~xyx/部分修改為ftp結點的地址,
將編譯後產生的位元組碼檔案及對應的HTML文檔上傳到該結點上,以查
看運行效果。
如果讀者的電腦沒有連網,也可以在單機上運行Web 服務軟
件如Webstar for Win95,將本文程式中對應的http: //www. shu
.edu.cn/~xyx/部分修改為“http://本地IP地址”的形式,來類比
網路編程。
二、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) {
出錯提示
}
中。
例如要調用http://www.shu.edu.cn/~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 = "http://www.shu.edu.cn/~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("http://www.shu.edu.cn/~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)先從網路上擷取音效檔,並產生AudioClip 類型的
對象,然後對該對象進行操作。
前者的使用格式是:
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 loopClip;
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 = "http://www.shu.edu.cn/~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 = "http://www.shu.edu.cn/~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 = "http://www.shu.edu.cn/~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("http://www.shu.edu.cn/~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();
}
}