程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 服務器和客戶機

服務器和客戶機

編輯:關於JAVA

網絡最基本的精神就是讓兩台機器連接到一起,並相互“交談”或者“溝通”。一旦兩台機器都發現了對方,就可以展開一次令人愉快的雙向對話。但它們怎樣才能“發現”對方呢?這就象在游樂園裡那樣:一台機器不得不停留在一個地方,偵聽其他機器說:“嘿,你在哪裡呢?”
“停留在一個地方”的機器叫作“服務器”(Server);到處“找人”的機器則叫作“客戶機”(Client)或者“客戶”。它們之間的區別只有在客戶機試圖同服務器連接的時候才顯得非常明顯。一旦連通,就變成了一種雙向通信,誰來扮演服務器或者客戶機便顯得不那麼重要了。
所以服務器的主要任務是偵聽建立連接的請求,這是由我們創建的特定服務器對象完成的。而客戶機的任務是試著與一台服務器建立連接,這是由我們創建的特定客戶機對象完成的。一旦連接建好,那麼無論在服務器端還是客戶機端,連接只是魔術般地變成了一個IO數據流對象。從這時開始,我們可以象讀寫一個普通的文件那樣對待連接。所以一旦建好連接,我們只需象第10章那樣使用自己熟悉的IO命令即可。這正是Java連網最方便的一個地方。

1. 在沒有網絡的前提下測試程序
由於多種潛在的原因,我們可能沒有一台客戶機、服務器以及一個網絡來測試自己做好的程序。我們也許是在一個課堂環境中進行練習,或者寫出的是一個不十分可靠的網絡應用,還能拿到網絡上去。IP的設計者注意到了這個問題,並建立了一個特殊的地址——localhost——來滿足非網絡環境中的測試要求。在Java中產生這個地址最一般的做法是:
InetAddress addr = InetAddress.getByName(null);
如果向getByName()傳遞一個null(空)值,就默認為使用localhost。我們用InetAddress對特定的機器進行索引,而且必須在進行進一步的操作之前得到這個InetAddress(互聯網地址)。我們不可以操縱一個InetAddress的內容(但可把它打印出來,就象下一個例子要演示的那樣)。創建InetAddress的唯一途徑就是那個類的static(靜態)成員方法getByName()(這是最常用的)、getAllByName()或者getLocalHost()。
為得到本地主機地址,亦可向其直接傳遞字串"localhost":
InetAddress.getByName("localhost");
或者使用它的保留IP地址(四點形式),就象下面這樣:
InetAddress.getByName("127.0.0.1");
這三種方法得到的結果是一樣的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved