【正文】
3Java的語法Java是面向?qū)ο蟮某绦蛟O(shè)計語言其基本語法和C語言大致相同從一定角度上講C語言加上面向?qū)ο蠊δ芫褪荂那么Java與C有什么區(qū)別呢簡要地說Java改進了C的一些缺點并增加了一些新的功能從而變得比C更加簡單易學編寫出來的程序也更具健壯性下面就對它們進行一個簡單的比較Java去掉了C語言的指針如指針使用得當對增強程序的功能有很大幫助一旦使用不當經(jīng)常會導致死機Java沒有了C語言中的預(yù)處理器如ifdefdefine常量聲明等都不使用了當然也少了include命令從而也沒有頭文件h文件和C相比Java不支持多繼承的概念目的是為了避免對象和對象之間的關(guān)系復(fù)雜化Java增加了垃圾回收機制異常處理和新的限定詞等功能這些幾乎全部都是基于整個系統(tǒng)和程序本身安全性的考慮不論在何種平臺上Java基本數(shù)據(jù)類型的大小是不變的 TCPIP協(xié)議TCPIP是Transmission Control ProtocolInternet Protocol的簡寫中文譯名為傳輸控制協(xié)議互聯(lián)網(wǎng)絡(luò)協(xié)議該協(xié)議是Internet最基本的協(xié)議簡單地說就是由底層的IP協(xié)議和TCP協(xié)議組成的TCPIP協(xié)議的開發(fā)工作始于70年代是用于互聯(lián)網(wǎng)的第一套協(xié)議 1TCPIP參考模型 TCPIP協(xié)議的開發(fā)研制人員將Internet分為五個層次以便于理解它也稱為互聯(lián)網(wǎng)分層模型或互聯(lián)網(wǎng)分層參考模型如下所示物理層對應(yīng)于網(wǎng)絡(luò)的基本硬件這也是Internet物理構(gòu)成即我們可以看得見的硬設(shè)備如PC機互連網(wǎng)服務(wù)器網(wǎng)絡(luò)設(shè)備等必須對這些硬設(shè)備的電氣特性作一個規(guī)范使這些設(shè)備都能夠互相連接幷兼容使用 網(wǎng)絡(luò)接口層它定義了將資料組成正確幀的規(guī)程和在網(wǎng)絡(luò)中傳輸幀的規(guī)程幀是指一串資料它是資料在網(wǎng)絡(luò)中傳輸?shù)膯挝?互聯(lián)網(wǎng)層本層定義了互聯(lián)網(wǎng)中傳輸?shù)男畔袷揭约皬囊粋€用戶通過一個或多個路由器到最終目標的信息包轉(zhuǎn)發(fā)機制 傳輸層為兩個用戶進程之間建立管理和拆除可靠而又有效的端到端連接 應(yīng)用層它定義了應(yīng)用程序使用互聯(lián)網(wǎng)的規(guī)程 2網(wǎng)間協(xié)議IP Internet 上使用的一個關(guān)鍵的底層協(xié)議是網(wǎng)際協(xié)議通常稱IP協(xié)議我們利用一個共同遵守的通信協(xié)議從而使 Internet 成為一個允許連接不同類型的計算機和不同操作系統(tǒng)的網(wǎng)絡(luò)要使兩臺計算機彼此之間進行通信必須使兩臺計算機使用同一種語言通信協(xié)議正像兩臺計算機交換信息所使用的共同語言它規(guī)定了通信雙方在通信中所應(yīng)共同遵守的約定 計算機的通信協(xié)議精確地定義了計算機在彼此通信過程的所有細節(jié)例如每臺計算機發(fā)送的信息格式和含義在什么情況下應(yīng)發(fā)送規(guī)定的特殊信息以及接收方的計算機應(yīng)做出哪些應(yīng)答等等 網(wǎng)際協(xié)議IP協(xié)議提供了能適應(yīng)各種各樣網(wǎng)絡(luò)硬件的靈活性對底層網(wǎng)絡(luò)硬件幾乎沒有任何要求任何一個網(wǎng)絡(luò)只要可以從一個地點向另一個地點傳送二進制數(shù)據(jù)就可以使用IP協(xié)議加入 Internet 了 如果希望能在 Internet 上進行交流和通信則每臺連上 Internet 的計算機都必須遵守IP協(xié)議為此使用 Internet 的每臺計算機都必須運行IP軟件以便時刻準備發(fā)送或接收信息 IP協(xié)議對于網(wǎng)絡(luò)通信有著重要的意義網(wǎng)絡(luò)中的計算機通過安裝IP軟件使許許多多的局域網(wǎng)絡(luò)構(gòu)成了一個龐大而又嚴密的通信系統(tǒng)從而使 Internet 看起來好象是真實存在的但實際上它是一種幷不存在的虛擬網(wǎng)絡(luò)只不過是利用IP協(xié)議把全世界上所有愿意接入 Internet 的計算機局域網(wǎng)絡(luò)連接起來使得它們彼此之間都能夠通信 3傳輸控制協(xié)議TCP 盡管計算機通過安裝IP軟件從而保證了計算機之間可以發(fā)送和接收資料但IP協(xié)議還不能解決資料分組在傳輸過程中可能出現(xiàn)的問題因此若要解決可能出現(xiàn)的問題連上 Internet 的計算機還需要安裝TCP協(xié)議來提供可靠的幷且無差錯的通信服務(wù) TCP協(xié)議被稱作一種端對端協(xié)議這是因為它為兩臺計算機之間的連接起了重要作用當一臺計算機需要與另一臺遠程計算機連接時TCP協(xié)議會讓它們建立一個連接發(fā)送和接收資料以及終止連接 傳輸控制協(xié)議TCP協(xié)議利用重發(fā)技術(shù)和擁塞控制機制向應(yīng)用程序提供可靠的通信連接使它能夠自動適應(yīng)網(wǎng)上的各種變化即使在 Internet 暫時出現(xiàn)堵塞的情況下TCP也能夠保證通信的可靠 眾所周知 Internet 是一個龐大的國際性網(wǎng)絡(luò)網(wǎng)絡(luò)上的擁擠和空閑時間總是交替不定的加上傳送的距離也遠近不同所以傳輸資料所用時間也會變化不定TCP協(xié)議具有自動調(diào)整超時值的功能能很好地適應(yīng) Internet 上各種各樣的變化確保傳輸數(shù)值的正確 因此從上面我們可以了解到IP協(xié)議只保證計算機能發(fā)送和接收分組資料而TCP協(xié)議則可提供一個可靠的可流控的全雙工的信息流傳輸服務(wù) 綜上所述雖然IP和TCP這兩個協(xié)議的功能不盡相同也可以分開單獨使用但它們是在同一時期作為一個協(xié)議來設(shè)計的幷且在功能上也是互補的只有兩者的結(jié)合才能保證 Internet 在復(fù)雜的環(huán)境下正常運行凡是要連接到 Internet 的計算機都必須同時安裝和使用這兩個協(xié)議因此在實際中常把這兩個協(xié)議統(tǒng)稱作TCPIP協(xié)議 Socket編程Socket 接口是訪問 Internet 使用得最廣泛的方法 如果你有一臺剛配好TCPIP協(xié)議的主機其IP地址201 此時在另一臺主機或同一臺主機上執(zhí)行ftp 201顯然無法建立連接因201 這臺主機沒有運行FTP服務(wù)軟件同樣 在另一臺或同一臺主機上運行瀏覽軟件 如Netscape輸入201也無法建立連接現(xiàn)在如果在這臺主機上運行一個FTP服務(wù)軟件該軟件將打開一個Socket 并將其綁定到21端口再在這臺主機上運行一個Web 服務(wù)軟件該軟件將打開另一個Socket并將其綁定到80端口這樣在另一臺主機或同一臺主機上執(zhí)行ftp 201FTP客戶軟件將通過21端口來呼叫主機上由FTP 服務(wù)軟件提供的Socket與其建立連接并對話而在netscape中輸入201時將通過80端口來呼叫主機上由Web服務(wù)軟件提供的Socket與其建 立連接并對話 在Internet上有很多這樣的主機這些主機一般運行了多個服務(wù)軟件同時提供幾種服務(wù)每種服務(wù)都打開一個Socket并綁定到一個端口上不同的端口對應(yīng)于不同的服務(wù)Socket正如其英文原意那樣象一個多孔插座一臺主機猶如布滿各種插座的房間每個插座有一個編號有的插座提供220伏交流電 有的提供110伏交流電有的則提供有線電視節(jié)目 客戶軟件將插頭插到不同編號的插座就可以得到不同的服務(wù)在Java中所謂Socket通常也稱作套接字用于描述IP地址和端口是一個通信鏈的句柄應(yīng)用程序通常通過套接字向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求 以J2SDK13為例Socket和ServerSocket類庫位于javanet包中ServerSocket用于服務(wù)器端Socket是建立網(wǎng)絡(luò)連接時使用的在連接成功時應(yīng)用程序兩端都會產(chǎn)生一個Socket實例操作這個實例完成所需的會話對于一個網(wǎng)絡(luò)連接來說套接字是平等的并沒有差別不因為在服務(wù)器端或在客戶端而產(chǎn)生不同級別不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的重要的Socket APIet繼承于ct有八個構(gòu)造器其方法并不多下面介紹使用最頻繁的三個方法其它方法可以參見JDK13文檔Accept方法用于產(chǎn)生阻塞直到接受到一個連接并且返回一個客戶端的Socket對象實例阻塞是一個術(shù)語它使程序運行暫時停留在這個地方直到一個會話產(chǎn)生然后程序繼續(xù)通常阻塞是由循環(huán)產(chǎn)生的 getInputStream方法獲得網(wǎng)絡(luò)連接輸入同時返回一個InputStream對象實例 getOutputStream方法連接的另一端將得到輸入同時返回一個OutputStream對象實例 注意其中g(shù)etInputStream和getOutputStream方法均可能會產(chǎn)生一個IOException它必須被捕獲因為它們返回的流對象通常都會被另一個流對象使用 服務(wù)器使用ServerSocket監(jiān)聽指定的端口端口可以隨意指定由于1024以下的端口通常屬于保留端口在一些操作系統(tǒng)中不可以隨意使用所以建議使用大于1024的端口等待客戶連接請求客戶連接后會話產(chǎn)生在完成會話后關(guān)閉連接 客戶端使用Socket對網(wǎng)絡(luò)上某一個服務(wù)器的某一個端口發(fā)出連接請求一旦連接成功打開會話會話完成后關(guān)閉Socket客戶端不需要指定打開的端口通常臨時的動態(tài)的分配一個1024以上的端口Socket接口是TCPIP網(wǎng)絡(luò)的APISocket接口定義了許多函數(shù)或例程程序員可以用它們來開發(fā)TCPIP網(wǎng)絡(luò)上的應(yīng)用程序要學Internet上的TCPIP網(wǎng)絡(luò)編程必須理解Socket接口 Socket接口設(shè)計者最先是將接口放在Unix操作系統(tǒng)里面的如果了解Unix系統(tǒng)的輸入和輸出的話就很容易了解Socket了網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的IOSocket也是一種文件描述符Socket也具有一個類似于打開文件的函數(shù)調(diào)用Socket 該函數(shù)返回一個整型的Socket描述符隨后的連接建立數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實現(xiàn)的 Swing簡介Swing是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包它以抽象窗口工具包AWT為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風格Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富靈活的功能