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