利用JAVA語言實現支持視頻點播的WEB服務器(3)_Windows教程
網絡本身的概念并不難。我們想獲得位于其他地方某臺機器上的信息,并把它們移到這兒;或者相反。這與讀寫文件非常相似,只是文件存在于遠程機器上,而且遠程機器有權決定如何處理我們請求或者發送的數據。但大多數編程語言對網絡編程都較困難,而Java最出色的一個地方就是它的"無痛苦連網"概念。有關連網的基層細節已被盡可能地提取出去,并隱藏在JVM以及Java的本機安裝系統里進行控制。我們使用的編程模型是一個文件的模型;事實上,網絡連接(一個"套接字")已被封裝到系統對象里,所以可象對其他數據流那樣采用同樣的方法調用。除此以外,在我們處理另一個連網問題--同時控制多個網絡連接--的時候,Java內建的多線程機制也是十分方便的。
服務器的主要任務是偵聽建立連接的請求,這是由我們創建的特定服務器對象完成的。而客戶機的任務是試著與一臺服務器建立連接,這是由我們創建的特定客戶機對象完成的。一旦連接建好,那么無論在服務器端還是客戶機端,連接變成了一個IO數據流對象。從這時開始,我們可以象讀寫一個普通的文件那樣對待連接。所以一旦建好連接,我們只需使用自己熟悉的IO命令即可。
首先,server=new ServerSocket(80,acceptamount);
生成一個服務器端的套接字。其中第一個參數是表示服務器的監聽端口,端口是機器內獨一無二的場所。有些時候,一個IP地址并不足以完整標識一個服務器。這是由于在一臺物理性的機器中,往往運行著多個服務器(程序)。由IP表達的每臺機器也包含了"端口"(Port)。我們設置一個客戶機或者服務器的時候,必須選擇一個無論客戶機還是服務器都認可連接的端口。端口并不是機器上一個物理上存在的場所,而是一種軟件抽象(主要是為了表述的方便)。客戶程序知道如何通過機器的IP地址同它連接,但怎樣才能同自己真正需要的那種服務連接呢(一般每個端口都運行著一種服務,一臺機器可能提供了多種服務,比如HTTP和FTP等等)?端口編號在這里扮演了重要的角色,它是必需的一種二級定址措施。
在HTTP協議中的默認服務端口是80,當然在小型社區中也可以使用其它的端口。本例中使用了默認服務端口。
Socket s=server.accept();
這一句的作用是使服務器監聽本機上的80端口,等待客戶機的連接。在沒有新的連接的情況下,服務器阻塞自身。當客戶機連接到服務器后函數返回一個套接字。然后,通過套接字的輸入,輸出流即可用讀取本機文件的方法與客戶機進行通信。
(三)客戶端設計
在客戶端,理想的裝置是電視機,因為當前電視機普及率高,有線電視線路遍布各地,可重用資源廣泛。但目前的電視機絕大多數是模擬電視機,它們只能接收模擬電視信號,無法接收數字電視信號,因此這種電視機的彩色圖像和伴音質量并不是很高。而數字電視無論從價格,電臺改造,線路改裝等方面都存在很大的困難,短期內難以普及。那么能否有一種折衷方案,即使目前的模擬電視機也能接收數字電視信號呢?回答是肯定的。但它們必須附加一個被稱作機頂盒(STB)的裝置。
- 相關鏈接:
- 教程說明:
Windows教程-利用JAVA語言實現支持視頻點播的WEB服務器(3)。