java網(wǎng)絡(luò)編程復(fù)習(xí)題1_第1頁
java網(wǎng)絡(luò)編程復(fù)習(xí)題1_第2頁
java網(wǎng)絡(luò)編程復(fù)習(xí)題1_第3頁
java網(wǎng)絡(luò)編程復(fù)習(xí)題1_第4頁
java網(wǎng)絡(luò)編程復(fù)習(xí)題1_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

/Java網(wǎng)絡(luò)編程期末復(fù)習(xí)題(I/O、多線程、網(wǎng)絡(luò)編程、數(shù)據(jù)庫操作)一、單選題1、下列關(guān)于Java線程的說法那些是正確的()A、每一個Java線程可以看成由代碼、一個真實的CPU以與數(shù)據(jù)三部份組成。B、創(chuàng)建線程的兩種方法中,從Thread類中繼承的創(chuàng)建方式可以防止出現(xiàn)多父類問題。C、Thread類屬于java.util程序包。D、以上說法無一正確。2、運行下列程序,會產(chǎn)生什么結(jié)果?()publicclassXextendsThreadimplementsRunable{publicvoidrun(){System.out.println("thisisrun()");}publicstaticvoidmain(Stringargs[]){Threadt=newThread(newX());t.start();}}A、第一行會產(chǎn)生編譯錯誤B、第六行會產(chǎn)生編譯錯誤C、第六行會產(chǎn)生運行錯誤D、程序會運行和啟動3、下列選項中,用于定義接口的關(guān)鍵字是()

A、importB、implementsC、interfaceD、protected4.定義類頭時能使用的修飾符是()。

A)privateB)staticC)abstractD)protected

5、下面哪個方法不可以在任何時候被任何線程調(diào)用?()A、wait()B、sleep()C、yield()D、synchronized(this)6.下列關(guān)于線程優(yōu)先級的說法中,正確的是A)線程的優(yōu)先級是不能改變的B)線程的優(yōu)先級是在創(chuàng)建線程時設(shè)置的C)在創(chuàng)建線程后的任何時候都可以設(shè)置D)B和C7.線程生命周期中正確的狀態(tài)是A)新建狀態(tài)、運行狀態(tài)和終止狀態(tài)B)新建狀態(tài)、運行狀態(tài)、阻塞狀態(tài)和終止狀態(tài)C)新建狀態(tài)、可運行狀態(tài)、運行狀態(tài)、阻塞狀態(tài)和終止狀態(tài)D)新建狀態(tài)、可運行狀態(tài)、運行狀態(tài)、恢復(fù)狀態(tài)和終止狀態(tài)8.Thread類中能運行線程體的方法是A)start() B)resume()C)init() D)run()9在程序讀入字符文件時,能夠以該文件作為直接參數(shù)的類是A) B)BufferedReaderC) D)ObjectInputStream10)java.io包的File類是A)字符流類 B)字節(jié)流類C)對象流類 D)非流類11)下列描述中,正確的是A)在Serializable接口中定義了抽象方法B)在Serializable接口中定義了常量C)在Serializable接口中沒有定義抽象方法,也沒有定義常量D)在Serializable接口中定義了成員方法12.java中用于創(chuàng)建文件對象的類是()A.FileB.ObjectC.ThreadD.Frame13.從鍵盤上輸入一個字符串創(chuàng)建文件對象,若要判斷該文件對象為目錄文件或數(shù)據(jù)文件,可使用下列哪個方法?()A.getPath()B.getName()C.isFile()D.isAbsolute()14.下列哪個類不對直接創(chuàng)建對象?()A.InputStreamB.C.BufferedInputStreamD.DataInputStream15.從鍵盤上輸入多個字符時,為了避免回車換行符的影響,需要使用下列哪個流方法?()A.write()B.flush()C.close()D.skip()16.以對象為單位把某個對象寫入文件,則需要使用什么方法?()A.writeInt()BwriteObject()C.write()D.writUTF()17.下列哪個類的方法能夠直接把簡單數(shù)據(jù)類型寫入文件?()A.OutputStreamB.BufferedWriterC.ObjectOutputStream.D.18.若一個類對象能被整體寫入文件,則定義該類時必須實現(xiàn)下列哪個接口?()A.RunnableB.ActionListenerC.WindowsAdapterD.Serializable19.下列哪種類型的數(shù)據(jù)能以對象的形式寫入文件?()A.StringB.FrameC.DialogD.Button20.File類的方法中,用于列舉某目錄下的子目錄與文件的方法是()A.longlength()B.longlastModified()C.String[]list()D.StringgetName()21.能夠以字符串為單位寫入文件數(shù)據(jù)的流類是()A.B.C.BufferedWriterC.OutputStream22.能夠向文件輸入邏輯型數(shù)據(jù)的類是:()A.B.OutputStreamC.D.DataOutputStream23.在線程同步中,為了喚醒另一個等待的線程,使用下列方法()A.sleep()B.wait()Cnotify()D.join()24.為了得到當(dāng)前正在運行的線程,可使用下列哪個方法?()A.getName()B.Thread.CurrentThread().B.sleep()D.run()25.以下()不屬于線程的狀態(tài)。A.就緒狀態(tài)B。運行狀態(tài)C。掛起狀態(tài)D。獨占狀態(tài)26.當(dāng)線程被創(chuàng)建后,其所處的狀態(tài)是()A.阻塞狀態(tài)B。運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)27.當(dāng)線程調(diào)用start()后,其所處狀態(tài)為()A.阻塞狀態(tài)B。運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)28.Thread.sleep()方法調(diào)用后,當(dāng)?shù)却龝r間未到,該線程所處狀態(tài)為()A.阻塞狀態(tài)B。運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)29.新生狀態(tài)的線程其可能直接進入的狀態(tài)是()A.阻塞狀態(tài)B、運行狀態(tài)C、新建狀態(tài)D、結(jié)束狀態(tài)30.Thread.sleep()方法調(diào)用后,當(dāng)?shù)却龝r間已到,該線程所處狀態(tài)為()A.阻塞狀態(tài)B。運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)31.當(dāng)線程因異常而退出run()后,其所處狀態(tài)為()A.阻塞狀態(tài)B。運行狀態(tài)C、就緒狀態(tài)D、結(jié)束狀態(tài)32.wait()方法首先是哪個類的方法?()A.ObjectB.Thread.C.RunnableD.File33.如果我們想實現(xiàn)“先把要寫入文件的數(shù)據(jù)先緩存到內(nèi)存中,再把緩存中的數(shù)據(jù)寫入文件中”的功能時,則需要使用下列哪個類?()A.B.OutputStreamC.FilterOutputStreamD.DataOutputStream34.用read()方法讀取文件內(nèi)容時,判斷文件結(jié)束的標記為()A.0B.1C-1D.無標記35.以下哪個方法只對使用了緩沖的流類起作用?()A.read()B.write()Cskip()D.flush()36.Java提供的類InetAddress來進行有關(guān)Internet地址的操作.()A.SocketB.ServerSocketC.DatagramSocketDInetAddress37.InetAddress類中哪個方法可實現(xiàn)正向名稱解析?()A.isReachable()B.getHostAddress()C.getHosstName()D.getByName()38.為了獲取遠程主機的文件內(nèi)容,當(dāng)創(chuàng)建URL對象后,需要使用哪個方法獲取信息()A.getPort()B.getHostC.openStream()D.openConnection()39.java程序中,使用TCP套接字編寫服務(wù)端程序的套接字類是()A.SocketB.ServerSocketC.DatagramSocketD.DatagramPacket40.ServerSocket的監(jiān)聽方法accept()的返回值類型是()A.voidB.ObjectC.SocketD.DatagramSocket41.ServerSocket的getInetAddress()的返回值類型是()A.SocketBServerSocketD.InetAddressD,.URL42.當(dāng)使用客戶端套接字Socket創(chuàng)建對象時,需要指定()A.服務(wù)器主機名稱和端口B、服務(wù)器端口和文件C、服務(wù)器名稱和文件D.服務(wù)器地址和文件43.使用流式套接字編程時,為了向?qū)Ψ桨l(fā)送數(shù)據(jù),則需要使用哪個方法()A.getInetAddress()B.getLocalPort()C.getOutputStream()D.getInputStream()44.使用UDP套接字通信時,常用哪個類把要發(fā)送的信息打包?()A.StringB.DatagramSocketC.MulticastSocketD.DatagramPacket45.使用UDP套接字通信時,哪個方法用于接收數(shù)據(jù)()A.read()B.receive()C.accept()D.Listen()46.若要取得數(shù)據(jù)包的中源地址,可使用下列哪個語句()?A.getAddress()B.getPort()C.getName()D.getData()47.要使用java程序訪問數(shù)據(jù)庫,則必須首先與數(shù)據(jù)庫建立連接,在建立連接前,應(yīng)加載數(shù)據(jù)庫驅(qū)動程序,該語句為()AClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)B.DriverManage.getConnection(“”,””,””)C.Resultrs=DriverManage.getConnection(“”,””,””).createStatement()D.Statementst=DriverManage.getConnection(“”,””,””).createStaement()48.要使用java程序訪問數(shù)據(jù)庫,則必須首先與數(shù)據(jù)庫建立連接,該語句為()AClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)B.DriverManage.getConnection(“”,””,””)C.Resultrs=DriverManage.getConnection(“”,””,””).createStatement()D.Statementst=DriverManage.getConnection(“”,””,””).createStaement()49.java程序與數(shù)據(jù)庫連接后,需要查看某個表中的數(shù)據(jù),使用下列哪個語句?()A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()50.java程序與數(shù)據(jù)庫連接后,需要查看某個表中的數(shù)據(jù),使用下列哪個語句?()A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()二、填空題1.StdoutSystem.out作為PrintStream的實例,來實現(xiàn)stdout,它代表的是屏幕2.StdinSystem.in作為InputStream類的一個實例來實現(xiàn)stdin,它代表的是鍵盤,你可以使用其中兩個成員函數(shù),read()讓你從輸入中讀一個字節(jié),skip(long

n)讓你在輸入中跳過n個字節(jié)。3.Java中的IO流分為兩種,一種是字節(jié)流,另一種是字符流,分別由四個抽象類來表示(每種流包括輸入和輸出兩種所以一共四個):InputStream,OutputStream,Reader,Writer。它們通過重載read()和write()方法定義了6個讀寫操作方法。4.File類不是一個標準的I/O類,在java.io類庫中它是唯一的non-stream類別,既不能讀取文件內(nèi)容,也不能修改文件內(nèi)容,主要作用是收集檔案(或目錄)的相關(guān)信息,例如:建立文件對象、修改文件名、設(shè)置文件屬性、測試文件屬性5.目錄是一個包含其他文件和路徑列表的File類。當(dāng)你創(chuàng)建一個File對象且它是目錄時,isDirectory()方法返回ture。這種情況下,可以調(diào)用該對象的String[]list()方法來提取該目錄內(nèi)部其他文件和目錄的列表6.所有的輸出過濾流都是抽象類_____的子類。(FilterOutputStream)7、字符輸入流BufferedReader使用了______技術(shù)。(PrintStream)8、InputStreamReader負責(zé)將InputStream轉(zhuǎn)化成Reader,而OutputStreamWriter則將OutputStream轉(zhuǎn)化成Writer。實際上是通過byte[]和String來關(guān)聯(lián)。9、設(shè)a.txt為當(dāng)前目錄下的一個文本文件,則以字符方式向該文件寫數(shù)據(jù)時,需要建立的輸出流通道為:new(“a.txt”);10.隨機訪問文件類是RandomAccessFile,它實現(xiàn)了與DataInputStream,DataOutputStream類同樣實現(xiàn)的接口DataInput,DataOutput.。11.實現(xiàn)多線程的兩種方式是:1、繼承Thread類;2、實現(xiàn)Runnable接口。12、取得當(dāng)前線程的語句是:Thread.currentThread();13.主線程的名稱是main,默認創(chuàng)建的第一個子線程的名稱是thread-014.可以調(diào)用Thread類的方法getPriority()和setPriority()來存取線程的優(yōu)先級,線程的優(yōu)先級界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之間,缺省是5(NORM_PRIORITY)。15.(1)當(dāng)多個線程同時運行時,會產(chǎn)生數(shù)據(jù)錯誤與其它沖突問題。Java語言提供了線程同步控制機制,一是鎖定共享資源,使得在任何時刻只有一個線程能夠訪問共享資源,以保持共享資源的完整和一致,二是讓互相通信的線程運行,以保證通信的正確性。(2)線程之間的通信有兩種方法:一是把共享變量和方法封閉在一個類中,二是利用系統(tǒng)方法和控制線程通信.實現(xiàn)對共享資源互拆訪問的方法是在方法聲明中加入synchronized關(guān)鍵字來聲明一個訪問共享資源的方法,或者通過synchronized關(guān)鍵字來聲明synchronized塊。16、守護線程一般被用于在后臺為其它線程提供服務(wù)。調(diào)用方法isDaemon()來判斷一個線程是否是守護線程,也可以調(diào)用方法setDaemon()將一個線程設(shè)為守護線程。

17、InetAddress是用于封裝IP地址和DNS的一個類。18、TCP/IP套接字是最可靠的雙向流協(xié)議。等待客戶端的服務(wù)器使用ServerSocket類,而要連接到服務(wù)器的客戶端則使用Socket類。19、包中提供了一個類MulticastSocket,允許數(shù)據(jù)報以廣播方式發(fā)送到該端口的所有客戶。20.在TCP/IP協(xié)議的傳輸層除了TCP協(xié)議之外還有一個UDP協(xié)議。幾個標準的應(yīng)用層協(xié)議HTTP,…使用的都是TCP協(xié)議。UDP協(xié)議主要用于需要很強的實時交互性的場合,如網(wǎng)絡(luò)游戲,視頻會議等21、當(dāng)我們得到一個URL對象后,就可以通過它讀取指定的WWW資源。這時我們將使用URL的方法openStream(),其定義為:InputStreamopenStream();

22、URL的構(gòu)造方法都聲明拋棄非運行時異常MalformedURLException,因此生成URL對象時,我們必須要對這一例外進行處理,通常是用try-catch語句進行捕獲。23、一個Statement對象,可以執(zhí)行多個sql語句以后,批量更新。這多個語句可以是delete、update、insert等或兼有

24、Java數(shù)據(jù)庫操作基本流程:取得數(shù)據(jù)庫連接、執(zhí)行sql語句、處理執(zhí)行結(jié)果、釋放數(shù)據(jù)庫連接。25、下列程序的功能是在監(jiān)控臺上每隔一秒鐘顯示一個字符串“Hello”,能夠填寫在程序中下劃線位置,使程序完整并能正確運行的語句是publicclassTestimplementsRunnable{publicstaticvoidmain(Stringargs[]){Testt=newTest();Threadtt=newThread(t);tt.start();}publicvoidrun(){for(;;){try{;}catch(e){}System.put.println("Hello");}}}答: Thread.sleep(1000)InterruptedException三、簡答與程序分析、填空、設(shè)計題第一部分:簡答1、線程的生命期內(nèi)包括哪些狀態(tài)?答:新建狀態(tài)、就緒狀態(tài)、運行狀態(tài)、阻塞狀態(tài)、死亡狀態(tài)見下圖:各狀態(tài)之間的切換關(guān)系死亡死亡創(chuàng)建阻塞就緒運行2、什么是線程的新建狀態(tài)?答:線程對象已經(jīng)創(chuàng)建,還沒有在其上調(diào)用start()方法。3、什么是線程的可運行狀態(tài)?答:當(dāng)線程有資格運行,但調(diào)度程序還沒有把它選定為運行線程時線程所處的狀態(tài)。當(dāng)start()方法調(diào)用時,線程首先進入可運行狀態(tài)。在線程運行之后或者從阻塞、等待或睡眠狀態(tài)回來后,也返回到可運行狀態(tài)。4、什么是線程的死亡態(tài)?答:當(dāng)線程的run()方法完成時就認為它死去。這個線程對象也許是活的,但是,它已經(jīng)不是一個單獨執(zhí)行的線程。線程一旦死亡,就不能復(fù)生。如果在一個死去的線程上調(diào)用start()方法,會拋出java.lang.IllegalThreadStateException異常。5、調(diào)用join()方法有何作用?答:保證當(dāng)前線程停止執(zhí)行,直到該線程所加入的線程完成為止。然而,如果它加入的線程沒有存活,則當(dāng)前線程不需要停止。6.現(xiàn)有字符串S=”hello,java!”,則以此字符串生成待發(fā)送DatagramPacket包dgp的語句是:答:Byte[]str=s.getbytes();DatagramPacketdgp=newDatagramPacket(str,str.length(),目的主機,目的端口);介紹使用javaSocket創(chuàng)建客戶端Socket的過程。

答:try{

Socketsocket=newSocket(目標主機,目標端口);

}catch(IOExceptione){

System.out.println("Error:"+e);

}

8、介紹使用javaServerSocket創(chuàng)建服務(wù)器端ServerSocket的過程。

答:ServerSocketserver=null;

try{

server=newServerSocket(監(jiān)聽端口);

}catch(IOExceptione){

System.out.println("cannotlistento:"+e);

}

Socketsocket=null;

try{

socket=server.accept();

}catch(IOExceptione){

System.out.println("Error:"+e);

}

9、寫出一種使用java流式套接式編程時,創(chuàng)建雙方通信通道的語句。答:PrintStreamos=newPrintStream(newBufferedOutputStreem(socket.getOutputStream()));

DataInputStreamis=newDataInputStream(socket.getInputStream());

PrintWriterout=newPrintWriter(socket.getOutStream(),true);

BufferedReaderin=newButfferedReader(newInputSteramReader(Socket.getInputStream()));

10、對于建立功能齊全的Socket,其工作過程包含以下四個基本的步驟:

(1)創(chuàng)建Socket;

(2)打開連接到Socket的輸入/出流;

(3)按照一定的協(xié)議對Socket進行讀/寫操作;

(4)關(guān)閉Socket.

11、簡述基于TCP與UDP套接字通信的主要區(qū)別答:TCP,可靠,傳輸大小無限制,但是需要連接建立時間,差錯控制開銷大。

UDP,不可靠,差錯控制開銷較小,傳輸大小限制在64K以下,不需要建立連接。寫出DatagramSocket的常用構(gòu)造方法:答:DatagramSocket();

DatagramSocket(intprot);

DatagramSocket(intport,InetAddressladdr)

port指明socket所使用的端口號,如果未指明端口號,則把socket連接到本地主機上一個可用的端口。laddr指明一個可用的本地地址。13、介紹一下DatagramPacket的常用構(gòu)造方法:

DatagramPacket(bytebuf[],intlength);

DatagramPacket(bytebuf[],intlength,InetAddressaddr,intport);

DatagramPacket(byte[]buf,intoffset,intlength);

DatagramPacket(byte[]buf,intoffset,intlength,InetAddressaddress,intport);

其中,buf中存放數(shù)據(jù)報數(shù)據(jù),length為數(shù)據(jù)報中數(shù)據(jù)的長度,addr和port旨明目的地址,offset指明了數(shù)據(jù)報的位移量。

14、在接收端接收數(shù)據(jù)報的主要語句:答:bytebuf[]=newbyte[n];DatagramPacketpacket=newDatagramPacket(buf,n);

Socket.receive(packet);

15、寫出java程序中用Statement來執(zhí)行sql查詢與更新語句Stringsql;//表示查詢或更新的操作語句;

Statementsm=cn.createStatement();//cn表示數(shù)據(jù)庫連接sm.executeQuery(sql);//執(zhí)行數(shù)據(jù)查詢語句(select)

sm.executeUpdate(sql);//執(zhí)行數(shù)據(jù)更新語句(delete、update、insert、drop等)statement.close();16.什么叫流?流式輸入輸出有什么特點?17.Java流被分為字節(jié)流、字符流兩大流類,兩者有什么區(qū)別?18.File類有哪些構(gòu)造函數(shù)和常用方法?16.答:所謂流是指同一臺計算機或網(wǎng)絡(luò)中不同計算機之間有序運動著的數(shù)據(jù)序列,Java把這些不同來源和目標的數(shù)據(jù)都統(tǒng)一抽象為數(shù)據(jù)流。數(shù)據(jù)流可分為輸入流和輸出流,輸入流代表從其他設(shè)備流入計算機的數(shù)據(jù)序列,輸出流代表從計算機流向外部設(shè)備的數(shù)據(jù)序列。流式輸入輸出的特點是數(shù)據(jù)的獲取和發(fā)送沿數(shù)據(jù)序列的順序進行,即每一個數(shù)據(jù)都必須等待排在它前面的數(shù)據(jù),等前面的數(shù)據(jù)讀入或送出之后才能被讀寫。所以流和隊列一樣,只能以“先進先出”的方式對其中的數(shù)據(jù)進行讀寫,而不能隨意選擇讀寫的位置。17.答:兩者都作為Object類的直接子類,基本輸入流(InputStream)和基本輸出流(OutputStream)是處理以8位字節(jié)為基本單位的字節(jié)流類;Reader和Writer類是專門處理16位字符流的類。18.答:構(gòu)造函數(shù)有:(1)publicpathname):創(chuàng)建一個對應(yīng)于參數(shù)pathname的File類對象。參數(shù)pathname是包含目錄和文件名的字符串。如果沒有文件名,則代表目錄。(2)publicparent,Stringchild):該構(gòu)造函數(shù)將pathname分成兩部分parent和child,參數(shù)parent表示目錄或文件所在路徑,參數(shù)child表示目錄或文件名稱。(3)publicparent,Stringchild):該構(gòu)造函數(shù)與上面一個不同在于將parent的參數(shù)類型由String變?yōu)镕ile,代表parent是一個已經(jīng)創(chuàng)建的File類文件對象(指向目錄)。常用方法有:(1)publicbooleancanWrite():返回文件是否可寫。(2)publicbooleancanRead():返回文件是否可讀。(3)publicbooleancreateNewFile():當(dāng)文件不存在時創(chuàng)建文件。19.位置指針的作用是什么?RandomAccessFile類提供了哪些方法實現(xiàn)對指針的控制?19.答:要實現(xiàn)對文件的隨機讀取,也就是在文件的任何位置執(zhí)行讀寫數(shù)據(jù)的操作,需要一個指針來指定讀寫的位置。在創(chuàng)建RandomAccessFile類對象的同時,系統(tǒng)自動創(chuàng)建了一個指向這個文件開頭的指針,當(dāng)執(zhí)行讀寫操作后,指針自動指向被讀寫數(shù)據(jù)之后的第一個字節(jié)處。指針初始值是0,每讀/寫一個字節(jié),指針自動增加1。RandomAccessFile類提供了一些控制指針移動的方法。publiclongget();獲取當(dāng)前指針指向文件的位置。pulbicvoidseek(longpos);將指針移動到參數(shù)pos指定的位置。publicintskipBytes(intn);指針從當(dāng)前位置向后移動n個字節(jié)位置,并返回指針實際移動的字節(jié)數(shù)。第二部分:分析程序功能或完成程序2、利用文件輸入輸出流編寫一個實現(xiàn)文件拷貝的程序,源文件名和目標文件名通過命令行參數(shù)傳入。答:importjava.io.*;classCopyFile{publicstaticvoidmain(String[]args){String;intch=0;try{[0];[1];fis=new(file1);fos=new(file2);while((ch=fis.read())!=-1)fos.write(ch);fis.close();fos.close();}catch(e){System.out.println("源文件:未找到!");}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("缺少運行參數(shù)!");System.exit(-1);}catch(IOExceptione){System.out.println(e.toString());}}}4、編寫一個程序,從鍵盤輸入一串字符,統(tǒng)計這串字符中英文字母、數(shù)字、其他符號的字符數(shù)。4.答:importjava.io.*;publicclassCount{publicstaticvoidmain(String[]args){intx=0,y=0,z=0;intch;try{while((ch=System.in.read())!='\r'){if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')x++;elseif(ch>='0'&&ch<='9')y++;elsez++;}}catch(IOExceptione){System.out.println(e.toString());}System.out.println("英文字母:"+x);System.out.println("數(shù)字字符:"+y);System.out.println("其它字符:"+z);}}5.編寫一個程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt文件中。5.答:importjava.io.*;publicclassInFile{publicstaticvoidmain(String[]args){intch;try{out=new("a.txt");while((ch=System.in.read())!='\r'){System.out.write(ch);out.write(ch);}out.close();System.out.write('\n');}catch(IOExceptione){System.out.println(e.toString());}System.out.println("輸出至文件完畢!");}}8、下列程序向屏幕輸出文本文件內(nèi)容:請完成所缺少的代碼importjava.io.*;classreadtxt{publicstaticvoidmain(String[]args){try{f1=new("u.txt");BufferedReaderbf1=newBufferedReader(f1);Stringline;line=bf1.readLine();while(line!=null)//判斷所讀的一行內(nèi)容是否為空;{System.out.println(line);line=bf1.readLine();//繼續(xù)讀入下一行}bf1.close();//關(guān)閉文件的輸入流;}catch(IOExceptione){e.printStackTrace();}}}10、請編寫java程序,訪問所在的主頁文件答:publicclassURLReader{

publicstaticvoidmain(String[]args)throwsException{/聲明拋出所有例外

URLtirc=newURL("");//構(gòu)建一URL對象

BufferedReaderin=newBufferedReader(newInputStreamReader(tirc.openStream()));

//使用openStream得到一輸入流并由此構(gòu)造一個BufferedReader對象

StringinputLine;

while((inputLine=in.readLine())!=null)//從輸入流不斷的讀數(shù)據(jù),直到讀完為止

System.out.println(inputLine);//把讀入的數(shù)據(jù)打印到屏幕上

in.close();//關(guān)閉輸入流

}

}11、從鍵盤上輸入主機名稱,編寫類似ping的程序,測試連接效果。import.*;importjava.io.*;classPing{ publicstaticvoidmain(String[]args){System.out.println("請輸入ping主機名稱或地址:\n");try{ Stringhost=keyreadline();InetAddressip=InetAddress.getByName(host);longt1=System.currentTimeMillis();if(ip.isReachable(5000)){longt2=System.currentTimeMillis();System.out.println("\nReplyfrom"+ip.getHostAddress()+"time<="+(t2-t1)+"ms");System.out.println();}else{System.out.println("Requesttimedout.");}}catch(IOExceptione){System.out.println("Requesttimedout.");}}privatestaticStringkeyreadline(){BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));Stringstr=null;try{str=br.readLine();}catch(IOExceptione){e.printStackTrace();}returnstr;}}12、設(shè)服務(wù)器端程序監(jiān)聽端口為8629,當(dāng)收到客戶端信息后,首先判斷是否是“BYE”,若是,則立即向?qū)Ψ桨l(fā)送“BYE”,然后關(guān)閉監(jiān)聽,結(jié)束程序。若不是,則在屏幕上輸出收到的信息,并由鍵盤上輸入發(fā)送到對方的應(yīng)答信息。請編寫程序完成此功能。mport.*;importjava.io.*;classServer{publicServer(){try{ServerSocketss=newServerSocket(8629);System.out.println("服務(wù)器端已運行,等待客戶端連接:");Socketsocket=ss.accept();//接收客戶端的連接請求;BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWriterout=newPrintWriter(socket.getOutputStream(),true);BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));Stringline;while(true){line=(in.readLine().trim());if(line.equals("BYE")){out.println("BYE");out.close();in.close();socket.close();br.close();ss.close();break;}System.out.println("客戶輸入為:"+line);System.out.println("請輸入回答:");line=br.readLine();//從鍵盤上輸入信息;out.println(line);//向?qū)Ψ桨l(fā)送信息}}catch(IOExceptione){}}publicstaticvoidmain(String[]args)throwsException{newServer();}}13、TCP客戶端需要向服務(wù)器端8629發(fā)出連接請求,與服務(wù)器進行信息交流,當(dāng)收到服務(wù)器發(fā)來的是“BYE”時,立即向?qū)Ψ桨l(fā)送“BYE”,然后關(guān)閉連接,否則,繼續(xù)向服務(wù)器發(fā)送信息。importjava.io.*;import.*;classClient2{publicClient2(){try{Strings;Socketsocket=newSocket("服務(wù)器地址",8629);BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWriterout=newPrintWriter(socket.getOutputStream(),true);BufferedReaderline=newBufferedReader(newInputStreamReader(System.in));while(true){System.out.println("請向服務(wù)器輸出一條字符串:");s=line.readLine();out.println(s);//向服務(wù)器發(fā)出信息;s=in.readLine().trim();//收到服務(wù)器發(fā)來的信息;System.out.println("服務(wù)器返回的信息是:");System.out.println(s);if(s.equals("BYE")){out.println("BYE");line.close();out.close();in.close();socket.close();break;}}}catch(IOExceptione){}}publicstaticvoidmain(String[]args){newClient2();}}14、UDP接收端importjava.io.*;import.*;classServer{publicstaticvoidmain(String[]args){newUDPServer();}}classUDPServer{publicUDPServer(){try{DatagramSocketsocket=newDatagramSocket(1986);//建立一個Socket連接System.out.println("服務(wù)器IP:"+InetAddress.getLocalHost().getHostAddress());//顯示服務(wù)器信息while(true){//接收byte[]instr=newbyte[200];DatagramPacketreceive=newDatagramPacket(instr,instr.length);socket.receive(receive);//接收客戶機發(fā)過來的數(shù)據(jù)Stringstr=newString(receive.getData());//提取數(shù)據(jù)if(str.trim().equals("BYE")){socket.close();break;}System.out.println("收到客戶端消息:"+str.trim());//打印客戶機消息//發(fā)送System.out.print("服務(wù)器發(fā)送消息:");str=newBufferedReader(newInputStreamReader(System.in)).readLine();//得到輸入的數(shù)據(jù)byte[]outstr=newbyte[str.length()];outstr=str.getBytes();DatagramPacketsend=newDatagramPacket(outstr,outstr.length,receive.getAddress(),receive.getPort());//向客戶機發(fā)送數(shù)據(jù)socket.send(send);//執(zhí)行發(fā)送}

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論