
討論了套接字類的功能后,我們將分析一個完整的TCP客戶端程序。此處我們將看到的客戶端程序是一個daytime客戶端,它連接到一個daytime服務器程序以讀取當前的日期和時間。建立套接字連接并讀取信息是一個相當簡單的過程,只需要少量的代碼。默認情況下daytime服務運行在13端口上。并非每臺計算機都運行了daytime服務器程序,但是Unix服務器是客戶端運行的很好的系統。如果你沒有訪問Unix服務器的權限,在第七部分我們給出了TCP daytime服務器程序代碼--有了這段代碼客戶端就可以運行了。
DaytimeClient的代碼
import java.net.* import java.io.*; public class DaytimeClient public static void main(String args[]) // 獲取服務器程序的主機名稱 try System.out.println ("Connection established"); // 在服務器程序停止的情況下設置套接字選項 // 從服務器程序讀取信息 System.out.println ("Results : " + // 關閉連接 |
DaytimeClient是如何工作的
Daytime應用程序是很容易理解的,它使用了文章前面談到的概念。建立套接字、獲取輸入流,在很少的事件中(在連接時像daytime一樣簡單的服務器程序失敗)激活超時設置。不是連接已篩選過的流,而是把有緩沖的讀取程序連接到套接字輸入流,并且把結果顯示給用戶。最后,在關閉套接字連接后客戶端終止。這是你可能得到的最簡單的套接字應用程序了--復雜性來自實現的網絡協議,而不是來自具體網絡的編程。
運行DaytimeClient
運行上面的應用程序很簡單。簡單地把運行daytime服務的計算機的主機名稱作為命令行參數指定并運行它就可以了。如果daytime服務器程序使用了非標準的端口號(在后面會討論),記得需要改變端口號并重新編譯。
例如,如果服務器程序在本機上,為了運行客戶端將使用下面的命令:
java DaytimeClient localhost
注意
Daytime服務器程序必須正在運行中,否則該客戶端程序將不能建立連接。例如如果你正在使用Wintel系統而不是Unix,那么你需要運行DaytimeServer(后面會談到)。