版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第13章Java高級(jí)編程教學(xué)內(nèi)容多線程的定義多線程的實(shí)現(xiàn)方法多線程同步和控制JDBC驅(qū)動(dòng)程序使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)的過(guò)程URL編程基于TCP/IP協(xié)議的Socket編程基于UDP協(xié)議的Socket編程教學(xué)目標(biāo)理解多線程相關(guān)概念掌握多線程的實(shí)現(xiàn)方法了解多線程的同步和控制原理理解JDBC的基本思想掌握應(yīng)用JDBC進(jìn)行Java數(shù)據(jù)庫(kù)編程的步驟和方法理解Java網(wǎng)絡(luò)編程的基本思想掌握應(yīng)用基于TCP/IP協(xié)議的Socket的編程方法實(shí)現(xiàn)客戶(hù)/服務(wù)器的編程模式了解基于無(wú)連接的數(shù)據(jù)報(bào)通信編程進(jìn)程與線程進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上的一次執(zhí)行過(guò)程,是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行所發(fā)生的活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。線程是一個(gè)比進(jìn)程小的基本單位,一個(gè)進(jìn)程包括多個(gè)線程,每一個(gè)線程代表一項(xiàng)系統(tǒng)需要執(zhí)行的任務(wù)。線程是一段完成某個(gè)特定功能的代碼,是程序中單個(gè)順序的流控制。但與進(jìn)程不同,線程共享地址空間。也就是說(shuō),多個(gè)線程能夠讀寫(xiě)相同的變量或數(shù)據(jù)結(jié)構(gòu)。所謂單線程就是程序執(zhí)行時(shí),進(jìn)程中的線程順序是連續(xù)的。在單線程的程序設(shè)計(jì)語(yǔ)言里,運(yùn)行的程序總是必須順著程序的流程走,遇到if-else語(yǔ)句就進(jìn)行判斷,遇到for、while等循環(huán)就多繞幾個(gè)圈,最后程序還是按著一定的順序走,且一次只能運(yùn)行一個(gè)程序塊。多線程的概念多線程的技術(shù)使單個(gè)程序內(nèi)部也可以在同一時(shí)刻執(zhí)行多個(gè)代碼段,完成不同的任務(wù),這種機(jī)制稱(chēng)為多線程。Java語(yǔ)言利用多線程實(shí)現(xiàn)了一個(gè)異步的執(zhí)行環(huán)境。比如說(shuō),在一個(gè)網(wǎng)絡(luò)應(yīng)用程序里,可以在后臺(tái)運(yùn)行一個(gè)下載網(wǎng)絡(luò)數(shù)據(jù)的線程,在前臺(tái)則運(yùn)行一個(gè)線程來(lái)顯示當(dāng)前下載的進(jìn)度,以及一個(gè)用于處理用戶(hù)輸入數(shù)據(jù)的線程。其實(shí)瀏覽器本身就是一個(gè)典型的多線程例子,它可以在瀏覽頁(yè)面的同時(shí)播放動(dòng)畫(huà)和聲音、打印文件等。多線程是實(shí)現(xiàn)并發(fā)的一種有效手段。Java在語(yǔ)言級(jí)上提供了對(duì)多線程的有效支持。多線程使程序運(yùn)行的效率得到了提高,也克服了單線程程序設(shè)計(jì)語(yǔ)言所無(wú)法設(shè)計(jì)的問(wèn)題。Java多線程機(jī)制是通過(guò)Java類(lèi)包java.lang中的類(lèi)Thread實(shí)現(xiàn)的,Thread類(lèi)封裝了對(duì)線程控制所必需的方法。線程的實(shí)例化對(duì)象定義了很多方法用來(lái)控制一個(gè)線程的行為。多線程的實(shí)現(xiàn)方法Java中實(shí)現(xiàn)多線程機(jī)制主要有兩種方法:一種是創(chuàng)建用戶(hù)自己的線程子類(lèi),一種是在定義的類(lèi)中實(shí)現(xiàn)Runnable接口。這兩種方法都需要使用到Java基礎(chǔ)庫(kù)中的Thread類(lèi)及其方法。1.Thread類(lèi)介紹Thread類(lèi)綜合了Java程序中的一個(gè)線程需要擁有的屬性和方法。Thread類(lèi)定義的幾種常用構(gòu)造方法如下:publicThread();創(chuàng)建一個(gè)線程。publicThread(Stringname);創(chuàng)建名稱(chēng)為name的線程。publicThread(Runnabletarget,Stringname);該構(gòu)造方法創(chuàng)建基于含有線程體對(duì)象的命名線程。其中,參數(shù)target是一個(gè)實(shí)現(xiàn)Runnable接口類(lèi)的實(shí)例,新線程的名稱(chēng)由name定義。多線程的實(shí)現(xiàn)方法(續(xù))2.Runnable接口介紹Runnable接口被定義為:
publicvoidrun();
當(dāng)使用實(shí)現(xiàn)接口Runnable的對(duì)象創(chuàng)建一個(gè)線程時(shí),啟動(dòng)該線程將導(dǎo)致在獨(dú)立執(zhí)行的線程中調(diào)用對(duì)象的run()方法。Java多線程機(jī)制可以通過(guò)創(chuàng)建Thread類(lèi)的子類(lèi)或Runnable接口實(shí)現(xiàn)的。實(shí)際上Thread類(lèi)實(shí)現(xiàn)了Runnable接口的run()方法,只是其實(shí)現(xiàn)的run()方法沒(méi)有具體的操作內(nèi)容。因此可以通過(guò)兩種方法實(shí)現(xiàn)線程體。但是不管采用哪種方法,有兩個(gè)關(guān)鍵性的操作:
(1)定義用戶(hù)線程的操作,即定義用戶(hù)線程的run()方法;
(2)在適當(dāng)時(shí)候建立用戶(hù)線程實(shí)例。多線程的實(shí)現(xiàn)過(guò)程(1)創(chuàng)建Thread類(lèi)的子類(lèi)定義一個(gè)線程類(lèi),它繼承線程類(lèi)Thread并重寫(xiě)其中的run()方法。初始化該類(lèi)實(shí)例時(shí)實(shí)例本身含有main()方法,所以目標(biāo)target為空,表示由這個(gè)線程實(shí)例對(duì)象來(lái)執(zhí)行線程體。程序框架如下:多線程的實(shí)現(xiàn)過(guò)程(續(xù))(2)實(shí)現(xiàn)Runnable接口創(chuàng)建一個(gè)類(lèi)實(shí)現(xiàn)接口Runnable,作為線程的目標(biāo)對(duì)象。初始化一個(gè)線程類(lèi)時(shí),將目標(biāo)對(duì)象傳遞給Thread實(shí)例,由該目標(biāo)對(duì)象提供run()方法,這樣實(shí)現(xiàn)Runnable的類(lèi)仍可繼承其他父類(lèi)。程序框架如下:多線程同步與控制1.多線程的同步線程之間的同步是指在同一時(shí)刻,系統(tǒng)內(nèi)容有多個(gè)線程在執(zhí)行。線程同步造成的最直接問(wèn)題就是對(duì)資源的訪問(wèn)問(wèn)題。例如某一時(shí)刻一個(gè)線程在讀取數(shù)據(jù),而另外一個(gè)線程在處理數(shù)據(jù),當(dāng)處理數(shù)據(jù)的線程沒(méi)有等到讀取數(shù)據(jù)的線程讀取完畢就去處理,必然得到錯(cuò)誤的處理結(jié)果。Java采用多線程同步控制機(jī)制,等到第一個(gè)線程讀取完數(shù)據(jù),第二個(gè)線程才處理該數(shù)據(jù),就避免數(shù)據(jù)沖突。使用關(guān)鍵字synchronized可使方法通信同步,如下所示:
publicsynchronizedstaticvoid方法名(){}多線程同步與控制(續(xù))2.線程的四種狀態(tài)一個(gè)線程,一般有四種狀態(tài):創(chuàng)建、運(yùn)行、阻塞與消亡。這四種狀態(tài)均可通過(guò)Thread類(lèi)所提供的方法來(lái)控制。創(chuàng)建的線程可運(yùn)行的線程阻塞的線程消亡的線程stop()run()結(jié)束stop()run()結(jié)束resume()resume()、sleep()數(shù)據(jù)庫(kù)編程在計(jì)算機(jī)應(yīng)用中,數(shù)據(jù)庫(kù)幾乎無(wú)處不在,大部分應(yīng)用系統(tǒng)都要涉及到對(duì)數(shù)據(jù)庫(kù)的操作。Java語(yǔ)言當(dāng)然也支持對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)和操作。在Java語(yǔ)言中,連接數(shù)據(jù)庫(kù)采用JDBC(JavaDatabaseConnectivity)技術(shù)。JDBC是Sun公司提供的與平臺(tái)無(wú)關(guān)的數(shù)據(jù)庫(kù)連接標(biāo)準(zhǔn)。有了JDBC,向各種關(guān)系數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句就是一件很容易的事。JDBC概述JDBC是實(shí)現(xiàn)Java程序與數(shù)據(jù)庫(kù)系統(tǒng)互連的標(biāo)準(zhǔn)API,由一組Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。它允許發(fā)送SQL語(yǔ)句給數(shù)據(jù)庫(kù),并處理執(zhí)行結(jié)果。使用JDBCAPI編寫(xiě)的程序可以很容易實(shí)現(xiàn)對(duì)不同數(shù)據(jù)庫(kù)的訪問(wèn)。JDBC驅(qū)動(dòng)程序類(lèi)型1.JDBC-ODBC橋JDBC-ODBC是一種JDBC驅(qū)動(dòng)程序,目的是將JDBC中的方法調(diào)用轉(zhuǎn)換成ODBC中相應(yīng)的方法調(diào)用,再通過(guò)ODBC訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng)。這種方法借用了ODBC的部分技術(shù),使用起來(lái)較容易,但是由于ODBC只有MicrosoftWindows操作系統(tǒng)支持,所以JDBC-ODBC橋驅(qū)動(dòng)程序最終只能運(yùn)行在windows操作系統(tǒng)中,失去Java跨平臺(tái)的優(yōu)勢(shì)。另外在每臺(tái)需要訪問(wèn)數(shù)據(jù)庫(kù)機(jī)器上,都要安裝ODBC,且必須建立一個(gè)DSN。2.NativeAPIJDBC驅(qū)動(dòng)JavatoNativeAPI驅(qū)動(dòng)程序是是利用客戶(hù)機(jī)上的本地代碼庫(kù)與數(shù)據(jù)庫(kù)直接通信。這類(lèi)驅(qū)動(dòng)程序需要在每臺(tái)客戶(hù)機(jī)上進(jìn)行預(yù)先安裝,使用和維護(hù)不方便。JDBC驅(qū)動(dòng)程序類(lèi)型(續(xù))3.Net-ProtocolDriver該驅(qū)動(dòng)程序是面向數(shù)據(jù)庫(kù)中間件的純Java驅(qū)動(dòng)程序,將JDBCAPI方法調(diào)用按照一個(gè)獨(dú)立于數(shù)據(jù)庫(kù)系統(tǒng)生產(chǎn)廠商的網(wǎng)絡(luò)協(xié)議,發(fā)送到一個(gè)中間服務(wù)器上,這臺(tái)服務(wù)器將這些方法調(diào)用轉(zhuǎn)換成針對(duì)特定數(shù)據(jù)庫(kù)系統(tǒng)的方法調(diào)用。這種驅(qū)動(dòng)程序一般由一些與數(shù)據(jù)庫(kù)產(chǎn)品無(wú)關(guān)的公司開(kāi)發(fā)。另外,此類(lèi)驅(qū)動(dòng)程序用純Java編寫(xiě),充分體現(xiàn)了Java跨平臺(tái)的優(yōu)勢(shì)。但是運(yùn)行這樣的程序需要購(gòu)買(mǎi)第三方廠商開(kāi)發(fā)的中間件和協(xié)議解釋器。4.PureJavaJDBCDriverJavatoNativeDatabaseProtocol驅(qū)動(dòng)程序也是一種純Java驅(qū)動(dòng)程序,它將JDBCAPI的方法調(diào)用轉(zhuǎn)換成具體數(shù)據(jù)庫(kù)系統(tǒng)能直接使用的內(nèi)部協(xié)議。這種方法的優(yōu)點(diǎn)是程序效率高,在實(shí)際編程中最常用。使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)1.安裝數(shù)據(jù)庫(kù)和驅(qū)動(dòng)程序本節(jié)采用Java開(kāi)源開(kāi)發(fā)工具Eclipse,使用開(kāi)源數(shù)據(jù)庫(kù)MySQL5.5。為例,具體安裝步驟如下:
(1)創(chuàng)建應(yīng)用程序項(xiàng)目(2)在項(xiàng)目中導(dǎo)入MySQLConnector/J類(lèi)庫(kù)使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)(續(xù))2.編寫(xiě)訪問(wèn)數(shù)據(jù)庫(kù)的Java程序①注冊(cè)驅(qū)動(dòng)程序注冊(cè)驅(qū)動(dòng)程序就是將驅(qū)動(dòng)程序類(lèi)裝入JVM的過(guò)程,JDBC驅(qū)動(dòng)程序類(lèi)是一個(gè)Java類(lèi),它在表示驅(qū)動(dòng)程序的JAR文件中已經(jīng)包括。注冊(cè)JDBC驅(qū)動(dòng)程序的具體方法是:Class.forName(<JDBC驅(qū)動(dòng)程序類(lèi)名>)JDBC使用Class類(lèi)的forName()方法指明加載哪個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的JDBC驅(qū)動(dòng)程序。forName()方法的參數(shù)為代表不同數(shù)據(jù)庫(kù)系統(tǒng)的一個(gè)字符串。使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)(續(xù))②建立驅(qū)動(dòng)程序和數(shù)據(jù)庫(kù)的連接在正確注冊(cè)JDBC驅(qū)動(dòng)程序后,使用DriverManager.getConnection()方法建立驅(qū)動(dòng)程序和數(shù)據(jù)庫(kù)的連接。語(yǔ)句如下:Connectionconn=DriverManager.getConnection(url,Login,password);getConnection()方法可有3個(gè)參數(shù),第一個(gè)參數(shù)是JDBCURL,第二、三參數(shù)分別是數(shù)據(jù)庫(kù)系統(tǒng)的用戶(hù)名和密碼,指定以什么身份連接數(shù)據(jù)庫(kù)。后面兩個(gè)參數(shù)是可選的。使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)(續(xù))③建立語(yǔ)句對(duì)象建立了到特定數(shù)據(jù)庫(kù)的連接之后,就可用該連接發(fā)送SQL語(yǔ)句。Statement對(duì)象用于將SQL語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)中。實(shí)際上有3種Statement對(duì)象:Statement、PreparedStatement和CallableStatement。其中PreparedStatement是Statement的子類(lèi),CallableStatement又是PreparedStatement的子類(lèi)。Statement對(duì)象用于執(zhí)行不帶參數(shù)的簡(jiǎn)單SQL語(yǔ)句;PreparedStatement對(duì)象用于執(zhí)行帶或不帶IN參數(shù)的預(yù)編譯SQL語(yǔ)句;CallableStatement對(duì)象用于執(zhí)行對(duì)數(shù)據(jù)庫(kù)已存儲(chǔ)過(guò)程的調(diào)用。語(yǔ)句對(duì)象將SQL語(yǔ)句發(fā)送到相應(yīng)的數(shù)據(jù)庫(kù),并獲得執(zhí)行結(jié)果。在獲取連接后,可以通過(guò)下列語(yǔ)句創(chuàng)建Statement對(duì)象。Statementstmt=con.createStatement();使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)(續(xù))④利用語(yǔ)句對(duì)象執(zhí)行SQL語(yǔ)句創(chuàng)建了Statement的對(duì)象stmt后,就可以使用Statement接口中的方法執(zhí)行SQL語(yǔ)句了。Statement接口提供了三種執(zhí)行SQL語(yǔ)句的方法:executeQuery、executeUpdate和execute。使用哪一個(gè)方法由SQL語(yǔ)句所產(chǎn)生的內(nèi)容決定。在數(shù)據(jù)庫(kù)操作中涉及的SQL語(yǔ)句主要有兩種類(lèi)型:查詢(xún)和更新。查詢(xún)使用executeQuery方法,該方法用于產(chǎn)生單個(gè)結(jié)果集的語(yǔ)句,返回結(jié)果集ResultSet。使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)(續(xù))⑤處理結(jié)果對(duì)于有返回結(jié)果集的要進(jìn)行結(jié)果處理。一般用在當(dāng)執(zhí)行SQL查詢(xún)語(yǔ)句后得數(shù)據(jù)列表。下面介紹ResultSet中較為常用的兩個(gè)方法:get***()系列方法用于訪問(wèn)當(dāng)前行的數(shù)據(jù)。ResultSet對(duì)象使用這些方法都存在兩個(gè)重載方法,一個(gè)方法根據(jù)列的序號(hào)(即列索引)訪問(wèn)數(shù)據(jù),另一個(gè)方法根據(jù)字段名訪問(wèn)數(shù)據(jù)。例如,方法getInt(intcolumIndex)和getInt(StringcolumName)為獲取當(dāng)前行的指定列的整型數(shù)據(jù),方法getString()為獲取當(dāng)前行的指定列的字符串型數(shù)據(jù),其他的依次類(lèi)推。使用JDBC進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)(續(xù))⑥關(guān)閉對(duì)象完成數(shù)據(jù)庫(kù)相應(yīng)的操作以后,一定要將數(shù)據(jù)庫(kù)連接對(duì)象關(guān)閉。這樣不僅釋放了資源,而且避免數(shù)據(jù)庫(kù)長(zhǎng)期連接造成的安全隱患。關(guān)閉數(shù)據(jù)庫(kù)操作的順序與打開(kāi)數(shù)據(jù)庫(kù)操作的順序相反,即:先關(guān)閉結(jié)果集ResultSet,再關(guān)閉操作Statement,最后關(guān)閉連接Connection。主要語(yǔ)句如下:
rs.close();stmt.close();con.close(); 網(wǎng)絡(luò)編程Java語(yǔ)言的內(nèi)置網(wǎng)絡(luò)功能非常強(qiáng)大。它能夠使用網(wǎng)絡(luò)上的各種資源和數(shù)據(jù),與服務(wù)器建立各種傳輸通道,將數(shù)據(jù)傳送到網(wǎng)絡(luò)的各個(gè)地方,使我們可以像訪問(wèn)本地資源一樣訪問(wèn)網(wǎng)絡(luò)資源。Java專(zhuān)門(mén)為網(wǎng)絡(luò)通信提供了系統(tǒng)包,該包屏蔽了網(wǎng)絡(luò)底層的實(shí)現(xiàn)細(xì)節(jié),使得編程者不必關(guān)心數(shù)據(jù)是如何在網(wǎng)絡(luò)中傳輸?shù)?,而將精力集中在功能的?shí)現(xiàn)上,簡(jiǎn)化了Java網(wǎng)絡(luò)編程。但是在網(wǎng)絡(luò)編程時(shí),需要首先引用該包。URL編程URL(UniformResourceLocator)是統(tǒng)一資源定位器的簡(jiǎn)稱(chēng),它表示Internet上某一資源的地址。通過(guò)URL我們可以訪問(wèn)Internet上的各種網(wǎng)絡(luò)資源,比如最常見(jiàn)的WWW和FTP服務(wù)器上資源。瀏覽器通過(guò)解析給定的URL可以在網(wǎng)絡(luò)上查找相應(yīng)的文件或其他資源。URL地址包括兩部分內(nèi)容:協(xié)議名和資源名,中間用冒號(hào)分開(kāi),即<protocol>://<hostname>:<port>/<filename>#<anchor>其中protocol指明獲取資源所使用的傳輸協(xié)議,如http、ftp、file等,”//”后面指出資源的地址,包括主機(jī)名、端口號(hào)、文件名或文件內(nèi)部的一個(gè)引用。對(duì)于多數(shù)協(xié)議,其中的主機(jī)名和文件名是必須的,而端口號(hào)和文件內(nèi)部的引用則是可選的。URL類(lèi)主要方法URLConnection類(lèi)主要方法URLConnection類(lèi)在包中,該類(lèi)用來(lái)表示與URL建立的通信連接。當(dāng)與一個(gè)URL建立連接時(shí),首先創(chuàng)建URL對(duì)象,然后調(diào)用URL對(duì)象的openConnection()方法實(shí)現(xiàn)連接。URLConnection類(lèi)用于訪問(wèn)網(wǎng)絡(luò)資源的主要方法如下:基于TCP/IP協(xié)議的Socket編程1.Socket的通信過(guò)程對(duì)于一個(gè)功能齊全的Socket,其工作過(guò)程包含以下四個(gè)基本的步驟:(1)創(chuàng)建通信雙方的Socket連接,即分別為服務(wù)器和客戶(hù)端創(chuàng)建Socket對(duì)象,建立Socket連接。(2)打開(kāi)連接到Socket的輸入流和輸出流;(3)按照一定的協(xié)議對(duì)Socket進(jìn)行讀/寫(xiě)操作;在本節(jié)里指的是基于TCP/IP協(xié)議(4)讀/寫(xiě)操作結(jié)束后,關(guān)閉Socket連接?;赥CP/IP協(xié)議的Socket編程(續(xù))2.基于TCP/IP協(xié)議的Socket編程的基本過(guò)程開(kāi)發(fā)一個(gè)基于TCP/IP協(xié)議的Socket網(wǎng)絡(luò)通信程序,需要編寫(xiě)服務(wù)器端和客戶(hù)端兩個(gè)應(yīng)用程序。編寫(xiě)服務(wù)器端應(yīng)用程序調(diào)用ServerSocket對(duì)象的accept()方法偵聽(tīng)接受客戶(hù)端的連接請(qǐng)求。創(chuàng)建與Socket對(duì)象綁定的輸入輸出流,并建立相應(yīng)的數(shù)據(jù)輸入輸出流。通過(guò)數(shù)據(jù)輸入輸出流與客戶(hù)端進(jìn)行數(shù)據(jù)讀寫(xiě),完成雙向通信。當(dāng)客戶(hù)端斷開(kāi)連接時(shí),關(guān)閉各個(gè)流對(duì)象。編寫(xiě)客戶(hù)端應(yīng)用程序創(chuàng)建指定服務(wù)器上指定端口號(hào)的Socket對(duì)象。創(chuàng)建于Socket對(duì)象綁定的輸入輸出流,并建立相應(yīng)的數(shù)據(jù)輸入輸出流。通過(guò)數(shù)據(jù)輸入輸出流與服務(wù)器端進(jìn)行數(shù)據(jù)讀寫(xiě),完成雙向通信。關(guān)閉與服務(wù)器端的連接,關(guān)閉各個(gè)流對(duì)象,結(jié)束通信?;赨DP協(xié)議的Socket編程UDP(用戶(hù)數(shù)據(jù)報(bào)協(xié)議)是一個(gè)無(wú)連接、不可靠的、發(fā)送獨(dú)立數(shù)據(jù)報(bào)的協(xié)議,所以基于UDP編程不提供可靠性保證,即數(shù)據(jù)在傳輸時(shí),用戶(hù)無(wú)法知道數(shù)據(jù)能否正確到達(dá)目的主機(jī),也不能確定數(shù)據(jù)到達(dá)目的主機(jī)的順序是否和發(fā)送的順序相同。但是有時(shí)人們需要快速傳輸信息,并能容忍小的錯(cuò)誤,就可以考慮使用UDP協(xié)議。DatagramPacket類(lèi)DatagramPacket類(lèi)和DatagramSocket類(lèi)是Java用來(lái)實(shí)現(xiàn)無(wú)連接的數(shù)據(jù)報(bào)通信的。其中DatagramPacket類(lèi)負(fù)責(zé)讀取數(shù)據(jù)等信息,它的主要構(gòu)造方法為:publicDatagramPacket(bytebuf[],intlength);publicDatagramPacket(bytebuf[],intlength,InetAddressadd,intport);第一個(gè)構(gòu)造方法主要用來(lái)創(chuàng)建接收數(shù)據(jù)報(bào)的對(duì)象,其中字節(jié)數(shù)組buf[]用來(lái)接收數(shù)據(jù)報(bào)的數(shù)據(jù),length指明所要接收的數(shù)據(jù)報(bào)的長(zhǎng)度。第二個(gè)構(gòu)造方法創(chuàng)建發(fā)送
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 足療站姿培訓(xùn)課件
- 分部分項(xiàng)技術(shù)管理要點(diǎn)
- 高級(jí)母嬰培訓(xùn)課件
- 胃腸減壓的護(hù)理倫理
- 古藺縣教育和體育局 古藺縣人力資源和社會(huì)保障局關(guān)于2025年11月公開(kāi)考核招聘教師的補(bǔ)充備考題庫(kù)及完整答案詳解1套
- 自然資源部所屬單位2026年度公開(kāi)招聘工作人員備考題庫(kù)(第一批)【634人】及參考答案詳解
- 2026重慶奉節(jié)縣竹園鎮(zhèn)人民政府全日制公益性崗位招聘5人備考題庫(kù)及完整答案詳解1套
- 頸肩腰腿課件培訓(xùn)
- 肱骨骨折患者康復(fù)期心理支持技巧
- 六下《繪制校園平面圖》教學(xué)設(shè)計(jì)
- 2026屆四川省成都市青羊區(qū)樹(shù)德實(shí)驗(yàn)中學(xué)物理九年級(jí)第一學(xué)期期末考試試題含解析
- 高溫熔融金屬冶煉安全知識(shí)培訓(xùn)課
- 林業(yè)種苗培育與管理技術(shù)規(guī)范
- 遼寧中考數(shù)學(xué)三年(2023-2025)真題分類(lèi)匯編:專(zhuān)題06 幾何與二次函數(shù)壓軸題 解析版
- 修復(fù)征信服務(wù)合同范本
- 湖南省5年(2021-2025)高考物理真題分類(lèi)匯編:專(zhuān)題11 近代物理(原卷版)
- 螺桿泵知識(shí)點(diǎn)培訓(xùn)課件
- 2025年及未來(lái)5年中國(guó)鈉基膨潤(rùn)土市場(chǎng)深度評(píng)估及行業(yè)投資前景咨詢(xún)報(bào)告
- 康復(fù)醫(yī)學(xué)科進(jìn)修匯報(bào)
- 工作票 操作票培訓(xùn)課件
- 地方高校數(shù)字經(jīng)濟(jì)微專(zhuān)業(yè)建設(shè)的優(yōu)化與突破
評(píng)論
0/150
提交評(píng)論