Java程序設(shè)計PPT課件版 第七章 數(shù)據(jù)輸入與輸出_第1頁
Java程序設(shè)計PPT課件版 第七章 數(shù)據(jù)輸入與輸出_第2頁
Java程序設(shè)計PPT課件版 第七章 數(shù)據(jù)輸入與輸出_第3頁
Java程序設(shè)計PPT課件版 第七章 數(shù)據(jù)輸入與輸出_第4頁
Java程序設(shè)計PPT課件版 第七章 數(shù)據(jù)輸入與輸出_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第七章數(shù)據(jù)輸入與輸出授課教師:陳??Q:443174964輸入/輸出流概念文件讀取與管理字節(jié)/符流類的功能與用法字節(jié)/符流的概念System的功能與用法本章主要內(nèi)容輸入/出流文件程序終端文件程序網(wǎng)絡(luò)端點(diǎn)數(shù)據(jù)流起點(diǎn)終點(diǎn)網(wǎng)絡(luò)端點(diǎn)文件,字符串存儲區(qū)什么是數(shù)據(jù)流?數(shù)據(jù)流是指所有的數(shù)據(jù)通信通道在java中有關(guān)流的操作使用java.io.*出于安全的考慮,小應(yīng)用不能實(shí)現(xiàn)文件I/O流計算機(jī)通信協(xié)議System類管理標(biāo)準(zhǔn)輸入輸出流和錯誤流System.out:把輸出送到缺省的顯示(通常是顯示器)System.in從標(biāo)準(zhǔn)輸入獲取輸入(通常是鍵盤)System.err把錯誤信息送到缺省的顯示每當(dāng)main方法被執(zhí)行時,就自動生成上述三個對象計算機(jī)網(wǎng)絡(luò)分層

OSI(Open

SystemInterconnection)開放系統(tǒng)互連參考模型,將計算機(jī)網(wǎng)絡(luò)分為:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層和應(yīng)用層。OSI分層模型和TCP/IP分層模型IP(Internet

Protocol)協(xié)議又稱互聯(lián)網(wǎng)協(xié)議,是支持網(wǎng)間互聯(lián)的數(shù)據(jù)報協(xié)議。TCP(Transmission

Control

Protocol)協(xié)議,即傳輸控制協(xié)議,規(guī)定一種可靠的數(shù)據(jù)信息傳遞服務(wù)。IP地址IP地址用于標(biāo)識網(wǎng)絡(luò)中的一個通信實(shí)體,這個通信實(shí)體可以是一臺主機(jī),也可以是一臺打印機(jī),或者是路由器的某一個端口。而在基于IP協(xié)議網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包,都必須使用IP地址來進(jìn)行標(biāo)識。IP地址是一個32位整數(shù),為了便于記憶,通常把它分成4個8位的二進(jìn)制數(shù)組成,每8位之間用圓點(diǎn)隔開,每個8位整數(shù)可以轉(zhuǎn)換成一個0~255的十進(jìn)制整數(shù)。例如:10(百度首頁)IP地址被分成了A、B、C、D、E五類,各自范圍如下:A類:~55 B類:~55C類:~55 D類:~55IP地址特殊的IP每一個字節(jié)都為0的地址(“”)對應(yīng)于當(dāng)前主機(jī);每一個字節(jié)都為1的IP地址(“255.255.255.255”)是當(dāng)前子網(wǎng)的廣播地址;凡是以“11110”開頭的E類IP地址都保留用于將來和實(shí)驗(yàn)使用。IP地址中不能以十進(jìn)制“127”作為開頭,該類地址中數(shù)字到55用于回路測試,如:可以代表本機(jī)IP地址,用“”就可以測試本機(jī)中配置的Web服務(wù)器。網(wǎng)絡(luò)ID的第一個8位組也不能全置為“0”,全“0”表示本地網(wǎng)絡(luò)。端口IP地址可以唯一確定網(wǎng)絡(luò)上的一個通信實(shí)體,但一個通信實(shí)體可以有多個通信程序同時提供網(wǎng)絡(luò)服務(wù),此時還需要使用端口表示數(shù)據(jù)交給哪個通信程序處理。端口是一個16位的整數(shù),端口號從0到65535。同一臺機(jī)器上不能有兩個程序使用同一個端口,通常將它分為三類:公認(rèn)端口:從0到1023,它們緊密綁定一些服務(wù);注冊端口:從1024到49151,它們松散地綁定一些服務(wù);動態(tài)或私有端口:從49152到65535,這些端口是應(yīng)用程序使用的動態(tài)端口,應(yīng)用程序一般不會主動使用這些端口。例如:簡單郵件傳輸協(xié)議:25,Telnet協(xié)議:23,F(xiàn)TP協(xié)議:21,超文本傳輸協(xié)議:80等。Java的基本網(wǎng)絡(luò)支持Java為網(wǎng)絡(luò)支持提供了包,其中InetAddress類代表IP地址,InetAddress下還有2個子類:Inet4Address、Inet6Address。InetAddress類沒有提供構(gòu)造器,而是提供了獲取InetAddress實(shí)例的靜態(tài)方法:

getByName(Stringhost):根據(jù)主機(jī)獲取對應(yīng)的InetAddress對象。

getByAddress(byte[]addr):根據(jù)原始IP地址來獲取對應(yīng)的InetAddress對象。InetAddress提供了獲取InetAddress實(shí)例對應(yīng)的IP和主機(jī)名的方法StringgetCanonicalHostName():獲取此IP地址的全限定域名。StringgetHostAddress():返回該InetAddress實(shí)例對應(yīng)的IP地址字符串(以字符串形式)。StringgetHostName():獲取此IP地址的主機(jī)名。URL和URLConnection

URL(Uniform

ResourceLocator)統(tǒng)一資源定位器是指向互聯(lián)網(wǎng)“資源”的指針。資源可以是簡單的文件或目錄,也可以是對更復(fù)雜的對象引用,例如對數(shù)據(jù)庫或搜索引擎的查詢。通常情況而言,URL可以由協(xié)議名、主機(jī)、端口和資源組成。即滿足如下格式:

protocol://host:port/resourceNameJava中提供了URL類,該類封裝了URL中各部分的內(nèi)容,例如獲取該URL對應(yīng)的主機(jī)名、路徑、端口等方法。例如:StringgetFile():獲取該URL的資源名;StringgetQuery():獲取該URL的查詢字符串部分;URLConnectionopenConnection():返回一個URLConnection對象,它代表了與URL所引用的遠(yuǎn)程對象的連接。InputStreamopenStream():打開與此URL的連接,并返回一個用于讀取該URL資源的InputStream。下載網(wǎng)絡(luò)圖片示例基于TCP協(xié)議的網(wǎng)絡(luò)編程TCP/IP通信協(xié)議是一種可靠的網(wǎng)絡(luò)協(xié)議,它在通信的兩端各建立一個Socket,從而在通信的兩端之間形成網(wǎng)絡(luò)虛擬鏈路。從而使兩端的程序可以通過虛擬鏈路進(jìn)行通信。Java對基于TCP協(xié)議的網(wǎng)絡(luò)通信提供了良好的封裝,使用Socket對象表示兩端的通信端口,并通過Socket產(chǎn)生IO流來進(jìn)行網(wǎng)絡(luò)通信。

IP協(xié)議是一個無連接的協(xié)議,負(fù)責(zé)將數(shù)據(jù)從源轉(zhuǎn)發(fā)到目的地,主要功能有:IP尋址、路由選擇、分組及重組。IP協(xié)議提供主機(jī)間的邏輯通信,提供“盡力而為的服務(wù)”,它將盡力而為地在主機(jī)間傳送數(shù)據(jù)段,不能保證交付與否、交付的時間、數(shù)據(jù)的完整性。因此,IP服務(wù)被稱為“不可靠”的服務(wù)。TCP(傳輸控制協(xié)議)被稱作一種端對端協(xié)議,通過建立TCP連接,以及流量控制、順序編碼、應(yīng)答和計時器等措施,TCP保證將數(shù)據(jù)按序、正確地從源主機(jī)中的一個進(jìn)程傳遞到目的主機(jī)的指定進(jìn)程。TCP將IP所提供的主機(jī)間不可靠傳遞服務(wù)轉(zhuǎn)換成進(jìn)程間的可靠地數(shù)據(jù)傳輸服務(wù)。基于TCP協(xié)議的網(wǎng)絡(luò)編程ServerSocket類的方法

ServerSocket(intport):用指定的端口來創(chuàng)建ServerSocket對象;

ServerSocket(intport,intbacklog):增加一個用來改變連接隊(duì)列長度的參數(shù)backlog。

ServerSocket(intport,intbacklog,InetAddresslocalAddr):在機(jī)器存在多個IP地址的情況下,允許通過localAddr參數(shù)指定將ServerSocket綁定到指定的IP地址。

Socketaccept():如果接收到一個客戶端Socket的連接請求,該方法將返回一個與客戶端Socket對應(yīng)的Socket;否則該方法將一直處于等待狀態(tài),線程也被阻塞。

在兩個通信實(shí)體沒有建立虛擬鏈路之前,必須有一個通信實(shí)體先做出“主動姿態(tài)”,主動接受來自其他通信實(shí)體的連接請求。Java中能接收其他通信實(shí)體連接請求的類是ServerSocket,該對象用于監(jiān)聽來自客戶端的Socket連接,如果沒有連接,它將一直處于等待狀態(tài)?;赥CP協(xié)議的網(wǎng)絡(luò)編程TCPSocket通信流程:1、服務(wù)端創(chuàng)建一個ServerSocket對象,指定端口號,ServerSocket對象等待客戶端的連接請求;2、客戶端創(chuàng)建一個Socket對象,指定主機(jī)地址和端口號,向服務(wù)端發(fā)出請求連接;3、服務(wù)端接收到客戶端的連接請求,建立一條TCP連接,再創(chuàng)建一個Socket對象與客戶端的Socket對象進(jìn)行通信;4、服務(wù)端和客戶端分別創(chuàng)建字節(jié)輸入流和字節(jié)輸出流,通過字節(jié)輸入流獲取對方發(fā)來的數(shù)據(jù),通過字節(jié)輸出流向?qū)Ψ桨l(fā)送數(shù)據(jù);5、當(dāng)一方?jīng)Q定結(jié)束通信時,向?qū)Ψ桨l(fā)送結(jié)束信息;另一方接收到結(jié)束信息后,雙方分別關(guān)閉各自的TCP的連接;6、ServerSocket對象停止等待客戶端的連接請求。Socket通信流程多人聊天小程序多人聊天小程序運(yùn)行效果“萍水相逢”的界面“難得糊涂”的界面“夢醒時分”的界面聊天界面設(shè)計關(guān)鍵代碼---界面布局多人聊天小程序構(gòu)造方法和成員聲明設(shè)置窗體屬性,添加控件并設(shè)置控件位置多人聊天小程序聊天界面設(shè)計關(guān)鍵代碼----事件處理離線按鈕的事件處理發(fā)送按鈕的事件處理聊天客戶端關(guān)鍵代碼多人聊天小程序聊天服務(wù)器端關(guān)鍵代碼啟動客戶端線程監(jiān)聽客戶端請求,并創(chuàng)建Socket與之通信客戶端線程關(guān)鍵代碼多人聊天小程序一個線程即代表一個用戶,需要創(chuàng)建一個聊天窗體,同時能夠接收其他用戶發(fā)送的信息。服務(wù)器端線程關(guān)鍵代碼多人聊天小程序獲取客戶端發(fā)送的信息,然后將其轉(zhuǎn)發(fā)給所有的用戶?;赨DP協(xié)議的網(wǎng)絡(luò)編程

UDP(User

DatagramProtocol,用戶數(shù)據(jù)報協(xié)議)是一個不可靠的網(wǎng)絡(luò)協(xié)議,以數(shù)據(jù)報為單位進(jìn)行數(shù)據(jù)傳輸,每個數(shù)據(jù)報是一個獨(dú)立信息,其中包括目標(biāo)主機(jī)的IP地址和端口。一個數(shù)據(jù)報從源主機(jī)出發(fā),經(jīng)過若干路由器,到達(dá)目標(biāo)主機(jī)的指定端口,它所經(jīng)過的路徑有多種可能,每次可能不同。從源主機(jī)發(fā)送到目的主機(jī)的多個包可能選擇不同的路由,也可能按不同的順序到達(dá)。如果目標(biāo)地址錯誤,或者某個路由器不正常,將導(dǎo)致數(shù)據(jù)報丟失,不能到達(dá)目的地,因此UDP不能保證數(shù)據(jù)傳輸?shù)目煽啃?。UDP協(xié)議是面向非連接的協(xié)議,沒有建立連接的過程,因此通信效率非常高,在一些實(shí)時性很強(qiáng)的應(yīng)用場景中具有較強(qiáng)的實(shí)用性和可行性,如網(wǎng)絡(luò)游戲、視頻會議等,UDP協(xié)議的快速具有獨(dú)特的魅力。Java提供了DatagramSocket對象作為基于UDP協(xié)議的Socket,使用DatagramPacket代表DatagramSocket發(fā)送、接收的數(shù)據(jù)報。基于UDP協(xié)議的網(wǎng)絡(luò)編程

DatagramSocket僅僅接收和發(fā)送數(shù)據(jù)報,自身不維護(hù)狀態(tài),也不能產(chǎn)生IO流,DatagramPacket表示接收和發(fā)送的數(shù)據(jù)。DatagramSocket中的方法DatagramSocket():創(chuàng)建一個DatagramSocket實(shí)例,并將該對象綁定到本機(jī)默認(rèn)IP地址、本機(jī)所有可用端口中隨機(jī)選擇的某個端口。DatagramSocket(intport):創(chuàng)建一個DatagramSocket實(shí)例,并將該對象綁定到本機(jī)默認(rèn)IP地址、指定端口。DatagramSocket(intport,InetAddressaddress):創(chuàng)建一個DatagramSocket實(shí)例,并將該對象綁定到指定IP地址、指定端口。receive(DatagramPacketp):從該DatagramSocket中接收數(shù)據(jù)報;send(DatagramPacketp):以該DatagramSocket發(fā)送數(shù)據(jù)報?;赨DP協(xié)議的網(wǎng)絡(luò)編程DatagramPacket中的方法DatagramPacket(byte[]buf,intlength):以一個空數(shù)組來創(chuàng)建DatagramPacket對象,該對象的作用是接收DatagramSocket中的數(shù)據(jù)。DatagramPacket(byte[]buf,

intoffset,intlength):以一個空數(shù)組來創(chuàng)建DatagramPacket對象,并指定接收到的數(shù)據(jù)放入buf數(shù)組中從offset開始,最多放length個字節(jié)。DatagramPacket(byte[]buf,

intlength,InetA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論