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