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

下載本文檔

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

文檔簡介

Java網(wǎng)絡編程期末復習題(I/O、多線程、網(wǎng)絡編程、數(shù)據(jù)庫操作)

一、單選題

1、下列關于Java線程的說法那些是正確的()

A、每一個Java線程可以看成由代碼、一個真實的CPU以與數(shù)據(jù)三部份

組成。

B、創(chuàng)建線程的兩種方法中,從Thread類中繼承的創(chuàng)建方式可以防止出

現(xiàn)多父類問題。

C、Thread類屬于java.util程序包°

D、以上說法無一正確。

2、運行下列程序,會產(chǎn)生什么結果?()

publicclassXextendsThreadimplementsRunable{

publicvoidrun(){

System.out.println("thisisrun()");

}

publicstaticvoidmain(Stringargs[]){

Threadt=newThread(newX());

t.startQ;

)

)

A、第一行會產(chǎn)生編譯錯誤

B、第六行會產(chǎn)生編譯借誤

C、第六行會產(chǎn)生運行錯誤

D、程序會運行和啟動

3、下列選項中,用于定義接口的關鍵字是()

A、import

B、implements

C、interface

D、protected

4.定義類頭時能運用的修飾符是()o

A)privateB)staticC)abstractD)protected

5、下面哪個方法不行以在任何時候被任何線程調(diào)用?()

A、wait()

B>sleepO

C、yield()

D、synchronized(this)

6.下列關于線程優(yōu)先級的說法中,正確的是

A)線程的優(yōu)先級是不能變更的

B)線程的優(yōu)先級是在創(chuàng)建線程時設置的

C)在創(chuàng)建線程后的任何時候都可以設置

D)B和C

7.線程生命周期中正確的狀態(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)、復原狀態(tài)和終止狀態(tài)

8.Thread類中能運行線程體的方法是

A)start()B)resume()

C)init()D)run()

9在程序讀入字符文件時,能夠以該文件作為干脆參數(shù)的類是

A)B)BufferedReader

C)D)ObjectinputStrearn

10)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.Frame

13.從鍵盤上輸入一個字符串創(chuàng)建文件對象,若要推斷該文件對象為書目

文件或數(shù)據(jù)文件,可運用下列哪個方法?()

A.getPath()B.getNameQC.isFileQD.isAbsolutef)

14.下列哪個類不對干脆創(chuàng)建對象?()

A,InputstreamB.C.BufferedlnputStreamD.

DatalnputStream

15.從鍵盤上輸入多個字符時,為了避開回車換行符的影響,須要運用下

列哪個流方法?()

A.write()B.flushf)C.close()D.skip()

16.以對象為單位把某個對象寫入文件,則須要運用什么方法?()

A.writelntf)BwriteObject()C.write()D.writUTFQ

17.下列哪個類的方法能夠干脆把簡潔數(shù)據(jù)類型寫入文件?()

A?OutputstreamB.BufferedWriterC.

ObjectOutputStream.D.

18.若一個類對象能被整體寫入文件,則定義該類時必需實現(xiàn)下列哪個接

口?()

A.RunnableB.ActionListenerC.WindowsAdapterD.

Serializable

19.下列哪種類型的數(shù)據(jù)能以對象的形式寫入文件?()

A.StringB.FrameC.DialogD.Button

20.File類的方法中,用于列舉某書目下的子書目與文件的方法是()

A.longlengthQB.longlastModifiedf)C.String[]list()D.

StringgetNameQ

21.能夠以字符串為單位寫入文件數(shù)據(jù)的流類是()

A.B.C.BufferedWriterC.Outputstream

22.能夠向文件輸入邏輯型數(shù)據(jù)的類是:()

A.B.OutputstreamC.D.DataOutputStream

23.在線程同步中,為了喚醒另一個等待的線程,運用下列方法()

A.sleepOB.wait()CnotifyOD.join()

24.為了得到當前正在運行的線程,可運用下列哪個方法?()

A.getNameQB.Thread.CurrentThread().B.sleepOD.

mn()

25.以下()不屬于線程的狀態(tài)。

A.就緒狀態(tài)Bo運行狀態(tài)Co掛起狀態(tài)Do獨占狀態(tài)

26.當線程被創(chuàng)建后,其所處的狀態(tài)是()

A.堵塞狀態(tài)Bo運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)

27.當線程調(diào)用start。后,其所處狀態(tài)為()

A.堵塞狀態(tài)Bo運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)

28.Thread.sleep()方法調(diào)用后,當?shù)却龝r間未到,該線程所處狀態(tài)

為()

A.堵塞狀態(tài)Bo運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)

29.新生狀態(tài)的線程其可能干脆進入的狀態(tài)是()

A.堵塞狀態(tài)B、運行狀態(tài)C、新建狀態(tài)D、結束狀態(tài)

30.Thread.sleep()方法調(diào)用后,當?shù)却龝r間已到,該線程所處狀態(tài)

為()

A.堵塞狀態(tài)Bo運行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)

31.當線程因異樣而退出run。后,其所處狀態(tài)為()

A.堵塞狀態(tài)Bo運行狀態(tài)C、就緒狀態(tài)D、結束狀態(tài)

32.wait。方法首先是哪個類的方法?()

A.ObjectB.Thread.C.RunnableD.File

33.假如我們想實現(xiàn)“先把要寫入文件的數(shù)據(jù)先緩存到內(nèi)存中,再把緩

存中的數(shù)據(jù)寫入文件中”的功能時,則須要運用下列哪個類?()

A.B.OutputStreamC.FilterOutputStreamD.

DataOutputStream

34.用read。方法讀取文件內(nèi)容時,推斷文件結束的標記為()

A.0B.1C-1D.無標記

35.以下哪個方法只對運用了緩沖的流類起作用?()

A.read()B.write()Cskip()D.flushQ

36.Java供應的類InetAddress來進行有關Internet地址的操作.()

A.SocketB.ServerSocketC.DatagramSocketD

InetAddress

37.InetAddress類中哪個方法可實現(xiàn)正向名稱解析?()

A.isReachable()B.getHostAddress()C.getHosstName()

D.getByNameQ

38.為了獲得遠程主機的文件內(nèi)容,當創(chuàng)建URL對象后,須要運用哪個

方法獲得信息()

A.getPortQB.getHostC.openStream()

D.openConnectionQ

39.java程序中,運用TCP套接字編寫服務端程序的套接字類是()

A.SocketB.ServerSocketC.DatagramSocket

D.DatagramPacket

40.ServerSocket的監(jiān)聽方法accept。的返回值類型是()

A.voidB.ObjectC.SocketD.DatagramSocket

41.ServerSocket的getlnetAddress。的返回值類型是()

A.SocketBServerSocketD.InetAddressD,.URL

42.當運用客戶端套接字Socket創(chuàng)建對象時,須要指定()

A.服務器主機名稱和端口B、服務器端口和文件C、服務器名

稱和文件

D.服務器地址和文件

43.運用流式套接字編程時,為了向對方發(fā)送數(shù)據(jù),則須要運用哪個方法

()

A.getlnetAddressf)B.getLocalPort()C.getOutputStrearn()

D.getlnputStreaml)

44.運用UDP套接字通信時,常用哪個類把要發(fā)送的信息打包?()

A.StringB.DatagramSocketC.MulticastSocket

D.DatagramPacket

45.運用UDP套接字通信時,哪個方法用于接收數(shù)據(jù)()

A.read()B.receive()C.accept()D.Listen()

46.若要取得數(shù)據(jù)包的中源地址,可運用下列哪個語句()?

A.getAddress()B.getPort()C.getNameQD.getDataQ

47.要運用java程序訪問數(shù)據(jù)庫,則必需首先與數(shù)據(jù)庫建立連接,在建

立連接前,應加載數(shù)據(jù)庫驅動程序,該語句為()

AClass.forNamef,sun.jdbc.odbc.JdbcOdbcDriver”)

B.DriverManage.getConnection(9999)

C.Resultrs=

DriverManage.getConnection(").createStatement()

D.Statementst=

DriverManage.getConnection("","”").createStaement()

48.要運用java程序訪問數(shù)據(jù)庫,則必需首先與數(shù)據(jù)庫建立連接,該語

句為()

AClass.forNamef"sun.jdbc.odbc.JdbcOdbcDriver”)

B.DriverManage.getConnection(

C.Resultrs=

DriverManage.getConnection(”).createStatement()

D.Statementst=

DriverManage.getConnection(""").createStaement()

49.java程序與數(shù)據(jù)庫連接后,須要查看某個表中的數(shù)據(jù),運用下列哪

個語句?()

A.executeQueryOB.executeUpdateQCexecuteEdit()

D.executeSelect()

50.java程序與數(shù)據(jù)庫連接后,須要查看某個表中的數(shù)據(jù),運用下列哪

個語句?()

A.executeQueryOB.executeUpdate()CexecuteEdit()

D.executeSelect()

二、填空題

1.StdoutSystem.out作為PrintStream的實例,來實現(xiàn)stdout,它

代表的是一屏幕

2.StdinSystem.in作為Inputstream類的一個實例來實現(xiàn)stdin,它

代表的是健盤,你可以運用其中兩個成員函數(shù),read。讓你從輸入中讀一

個字節(jié),skipQongn)讓你在輸入中跳過n個字節(jié)。

3.Java中的IO流分為兩種,一種是字節(jié)流,另一種是字符流,分別由

四個抽象類來表示(每種流包括輸入和輸出兩種所以一共四

個):InputStream,Outputstream,Reader,Writer。它們通過重載

read()和write()方法定義了6個讀寫操作方法。

4.File類不是一他襟型的I/O類,在java.io類庫中它是唯一的

non-streamm,既不能取文件內(nèi)容,也不能修改文件內(nèi)容,主要作

用是收集槽案(或目的相%J信息,例如:建立文件對象、修改文件名、

設置文件屬性、測試文件屬性

5.書目是一個包含其他文件和路徑列表的File類。當你創(chuàng)建一個File對

象且它是書目時,isDirectory()方法返回ture。這種狀況下,可以調(diào)用

該對象的String[]list()方法來提取該書目內(nèi)部其他文件和書目的列表

6.全部的輸出過濾諭都是抽象類——的子類。

(FilterOutputStreain)

7、字符輸入流BufferedReader運用了一____技術。

(Printstream)

8、InputStreamReader負責將Inputstream轉化成Reader,而

OutputStreamWriter貝i]將Outputstream轉化成Writer。事實上是通

過byte[]和String來關聯(lián)。

9、設a.txt為當前書目下的一個文本文件,則以字符方式向該文件寫數(shù)

據(jù)時,須要建立的輸出流通道為:new("a.txt");

10.隨機訪問文件類是RandomAsessFile,它實現(xiàn)了與

DatalnputStream,DataOutputStream類同樣實現(xiàn)的接口Datalnput,

DataOutput.。

11.實現(xiàn)多線程的兩種方式是:1、繼承Thread類;2、實現(xiàn)Runnable

接口。

12、取得當前線程的語句是:Thread.currentThread();

13.主線程的名稱是main,默認創(chuàng)建的第一個子線程的名稱是

thread-O

14.可以調(diào)用Thread類的方法getPriority()和setPriority()來

存取線程的優(yōu)先級,線程的優(yōu)先級界于1(MINPRIORITY)和的

(MAXPRIORITY)之間,缺省是5(NORM_PRIORITY)。

15.(1)當多個線程同時運行時,會產(chǎn)生數(shù)據(jù)錯誤與其它沖突問題。Java

語言供應了線程同步限制機制,一是鎖定共享資源,使得在任何時

刻只有一個線程能夠訪問共享資源,以保持共享資源的完整和一樣,二是

讓相互通信的線程運行,以保證通信的正確性。

(2)線程之間的通信有兩種方法:一是把共享變量和方法封閉在一個類

中,二是利用系統(tǒng)方法和限制線程通信.實現(xiàn)對共享資源互

拆訪問的方法是在方法聲明中加入synchronized關健字來聲明一個訪問

共享資源的方法,或者通過synchronized關鍵字來聲明synchronized

塊。

16、守護線程一般被用于在后臺為其它線程供應服務。調(diào)用方法

isDaemonO來推斷一個線程是否是守護線程,也可以調(diào)用方法

setDaemon。將一個線程設為守護線程。

17、InetAddress是用于封裝IP地址和DNS的一個類。

18、TCP/IP套接字是最牢靠的雙向流協(xié)議。等待客戶端的服務器運用

Serversocket類,而要連接到服務器的客戶端則運用Socket類。

19、java.net包中供應了一個類MuIticastSocket,允許數(shù)據(jù)報以廣

播方式發(fā)送到該端口的全部客戶。

20.在TCP/IP協(xié)議的傳輸層除了TCP協(xié)議之外還有一個UDP協(xié)議。

幾個標準的應用層協(xié)議HTTP,…運用的都是TCP協(xié)議。UDP協(xié)議主要

用于須要很強的實時交互性的場合,如網(wǎng)絡游戲,視頻會議等

21、當我們得到一個URL對象后,就可以通過它讀取指定的WWW資

源。這時我們將運用URL的方法openStream。,其定義為:InputStream

openStrearn。;

22、URL的構造方法都聲明拋棄非運行時異樣

MalformedURLException,因此生成URL對象時,我們必需要對這一

例外進行處理,通常是用try-catch語句進行捕獲。

23、一個Statement對象,可以執(zhí)行多個sql語句以后,批量更新。

這多個語句可以是delete、update、insert等或兼有

24、Java數(shù)據(jù)庫操作基本流程:取得數(shù)據(jù)庫連接、執(zhí)行sql語句、處

理執(zhí)行結果、釋放數(shù)據(jù)庫連接。

25、下列程序的功能是在監(jiān)控臺上每隔一秒鐘顯示一個字符串

“Hello”,能夠填寫在程序中下劃線位置,使程序完整并能正確運行的語

句是

publicclassTestimplementsRunnable{

publicstaticvoidmainfStringargs[|){

Testt=newTest();

Threadtt=newThread(t);

tt.startQ;

)

publicvoidrun(){

for(;;){

try{

}catch(e){}

System.put.println("Hello");

答:Thread.sleep(l000)

InterruptedException

三、簡答與程序分析、填空、設計題

第一部分:簡答

1、線程的生命期內(nèi)包括哪些狀態(tài)?

答:新建狀態(tài)、就緒狀態(tài)、運行狀態(tài)、堵塞狀態(tài)、死亡狀態(tài)

見下圖:各狀態(tài)之間的切換關系

2、什么是線程的新建狀態(tài)?

答:線程對象已經(jīng)創(chuàng)建,還沒有在其上調(diào)用start。方法。

3、什么是線程的可運行狀態(tài)?

答:當線程有資格運行,但調(diào)度程序還沒有把它選定為運行線程時

線程所處的狀態(tài)。當start。方法調(diào)用時,線程首先進入可運行狀態(tài)。在線

程運行之后或者從堵塞、等待或睡眠狀態(tài)回來后,也返回到可運行狀態(tài)。

4、什么是線程的死亡態(tài)?

答:當線程的run()方法完成時就認為它死去。這個線程對象或許是

活的,但是,它已經(jīng)不是一個單獨執(zhí)行的線程。線程一旦死亡,就不能復

生。假如在一個死去的線程上調(diào)用start。方法,會拋出

java.lang.IllegalThreadStateException異樣。

5、調(diào)用join。方法有何作用?

答:保證當前線程停止執(zhí)行,直到該線程所加入的線程完成為止。然

而,假如它加入的線程沒有存活,則當前線程不須要停止。

6.現(xiàn)有字符串S="hello,java!”,則以此字符串生成待發(fā)送

DatagramPacket包dgp的語句是:

答:

Byte[]str=s.getbytes();

DatagramPacketdgp=newDatagramPacket(str,

str.length(),目的主機,目的端口);

7、介紹運用javaSocket創(chuàng)建客戶端Socket的過程。

答:try{

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

}catch(IOExceptione){

System.out.println("Error:H+c);

8、介紹運用javaServerSocket創(chuàng)建服務器端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=newPrintStreamfnew

BufferedOutputStreem(socket.getOutputStream()));

DatalnputStreamis=new

DataInputStream(socket.getInputStream());

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

BufferedReaderin=newButfferedReaderfnew

InputSteramReader(Socket.getInputStream()));

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

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

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

(3)依據(jù)確定的協(xié)議對Socket進行讀/寫操作;

(4)關閉Socket.

11、簡述基于TCP與UDP套接字通信的主要區(qū)分

答:TCP,牢靠,傳輸大小無限制,但是須要連接建立時間,差錯限

制開銷大。

UDP,不行靠,差錯限制開銷較小,傳輸大小限制在64K以下,

不須要建立連接。

12、寫出DatagramSocket的常用構造方法:

答:

DatagramSocket();

DatagramSocket(intprot);

DatagramSocketfintport,InetAddressladdr)

port指明socket所運用的端口號,假如未指明端口號,則把socket

連接到本地主機上一個可用的端口。laddr指明一個可用的本地地址。

13>介紹一下DatagramPacket的常用構造方法:

DatagramPacket(bytebuf[],intlength);

DatagramPacketfbytebuf[],intlength,InetAddressaddr.int

port);

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.closeQ;

16.什么叫流?流式輸入輸出有什么特點?

17.Java流被分為字節(jié)流、字符流兩大流類,兩者有什么區(qū)分?

18.File類有哪些構造函數(shù)和常用方法?

電簽_所謂流是指同一臺計算機或網(wǎng)絡中不同計算機之間有序運動著的

數(shù)據(jù)序列,Java把這些不同來源和目標的數(shù)據(jù)都統(tǒng)一抽象為數(shù)據(jù)流。數(shù)

據(jù)流可分為輸入流和輸出流,輸入流代表從其他設備流入計算機的數(shù)據(jù)序

列,輸出流代表從計算機流向外部設備的數(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.答:構造函數(shù)有:

(1)publicpathname):創(chuàng)建一個對應于參數(shù)pathname的File類

對象。參數(shù)pathname是包含書目和文件名的字符串。假如沒有文件名,

則代表書目。

(2)publicparent,Stringchild):該構造函數(shù)將pathname分成兩

部分parent和child,參數(shù)parent表示書目或文件所在路徑,參數(shù)child

表示書目或文件名稱。

(3)publicparent,Stringchild):該構造函數(shù)與上面一個不同在于

將parent的參數(shù)類型由String變?yōu)镕ile,代表parent是一個已經(jīng)創(chuàng)建

的File類文件對象(指向書目)。

常用方法有:

(1)publicbooleancanWrite():返[01文件是否可寫。

(2)publicbooleancanRead():返回文件是否可讀。

(3)publicbooleancreateNewFile():當文件不存在時創(chuàng)建文件。

19.位置指針的作用是什么?RandomAccessFile類供應了哪些方法實

現(xiàn)對指針的限制?

19.答:要實現(xiàn)對文件的隨機讀取,也就是在文件的任何位置執(zhí)行讀寫數(shù)

據(jù)的操作,須要一個指針來指定讀寫的位置。在創(chuàng)建RandomAccessFile

類對象的同時,系統(tǒng)自動創(chuàng)建了一個指向這個文件開頭的指針,當執(zhí)行讀

寫操作后,指針自動指向被讀寫數(shù)據(jù)之后的第一個字節(jié)處。指針初始值是

0,每讀/寫一個字節(jié),指針自動增加loRandomAccessFile類供應了

一些限制指針移動的方法。

publiclongget。;獲得當前指針指向文件的位置。

pulbicvoidseek(longpos);將指針移動到參數(shù)pos指定的位置。

publicintskipBytesfintn);指針從當前位置向后移動n個字節(jié)位置,并

返回指針實際移動的字節(jié)數(shù)。

其次部分:分析程序功能或完成程序

2、利用文件輸入輸出流編寫一個實現(xiàn)文件拷貝的程序,源文件名和目標

文件名通過叮囑行參數(shù)傳入。

答:

importjava.io.*;

classCopyFile{

publicstaticvoidmain(String[]args){

String;

intch=0;

try{

[0];

[1];

fis=new(filel);

fos=new(file2);

while((ch=fis.read())!=-l)

fos.write(ch);

fis.closeQ;

fos.closeQ;

)

catch(e){

System.out.println("源文件沫找到!”);

}catch(ArrayIndexOutOfBoundsExceptione){

System.out.printin("缺少運行參數(shù)!”);

System.exit(-l);

catch(lOExceptione){

System.out.println(e.toStringO);

}

4、編寫一個程序,從鍵盤輸入一串字符,統(tǒng)計這串字符中英文字母、數(shù)

字、其他符號的字符數(shù)。

4.答:

importjava.io.*;

publicclassCount{

publicstaticvoidmain(String[]args)

{

intx=O,y=O,z=O;

intch;

try{

while((ch=System.in.read())!='\r'){

if(ch>='A'&&ch<=,Z,||ch>='a'&&ch<='z')

x++;

elseif(ch>='0'&&ch<='9')

y++;

else

z++;

}catch(IOExceptione){

System.out.println(e.toStringO);

)

System.out.printin("英文字母:"+x);

System.out.println("數(shù)字字符:"+y);

System.out.printing其它字符:"+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.closeQ;

System.out.write('\n,);

}catch(IOExceptione){

System.out.println(e.toStringO);

}

System.out.println("輸出至文件完畢!”);

)

)

8、下列程序向屏幕輸出文本文件內(nèi)容:請完成所缺少的代碼

importjava.io.*;

classreadtxt

{

publicstaticvoidmain(String[]args){

try{

fl=newC'u.txt");

BufferedReaderbfl=newBufferedReader(f1);

Stringline;

line=bfl.readLinef);

while(Knel=nun)//推斷所讀的一行內(nèi)容是否為空;

System.out.printin(line);

line=bfl?readLine();//接著讀入下一行

bfl.closeO;〃關閉文件的輸入流;

}catch(IOExceptione){e.printStackTrace();}

}}

10、請編寫java程序,訪問所在的主頁文件

答:publicclassURLReader{

publicstaticvoidmain(String[]argslthrowsException{/聲

明拋出全部例外

URLtire=newURL(叫;//構建一URL對象

BufferedReaderin=newBufferedReaderfnew

IiwutStreamReader(tirc.openStream()));

//運用openStream得到一輸入流并由此構造一個

BufferedReader對象

StringinputLine;

while((inputLine=in.readLineO)!=null)〃從輸入流不斷的讀

數(shù)據(jù),直到讀完為止

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

in.close。;〃關閉輸入流

11、從鍵盤上輸入主機名稱,編寫類似ping的程序,測試連接效果。

import.*;

importjava.io.*;

classPing{

publicstaticvoidmain(String[]args)

{System.out.printin("請輸入ping主機名稱或地址:\n");

try{

Stringhost=keyreadline();

InetAddressip=InetAddress.getByName(host);

longtl=System.currentTimeMillisO;

if(ip.isReachable(5OOO))

{longt2=System.currentTimnMillis();

System.out.println("\nReplyfrom"+ip.getHostAddressQ+

time<=H+(t2-tl)+"ms");

System.out.println();

)

else{System.out.printlnf'Requesttimedout.");

}}

catch(lOExccptionc)

{System.out.printin("Requesttimedout.");}

privatestaticStringkeyreadlinef){

BufferedReaderbr=newBufferedReaderfnew

InputStreamReader(System.in));

Stringstr=null;

try{

str=br.readLinef);

}catch(lOExceptione){

e.printStackTraceQ;}

returnstr;

)

|

12、設服務器端程序監(jiān)聽端口為8629,當收到客戶端信息后,首先推斷

是否是“BYE”,若是,則立刻向對方發(fā)送“BYE”,然后關閉監(jiān)聽,結束

程序。若不是,則在屏幕上輸出收到的信息,并由鍵盤上輸入發(fā)送到對方

的應答信息。請編寫程序完成此功能。

mport.*;

importjava.io.*;

classServer{

publicScrvcr(){

try{

ServerSocketss=newServerSocket(8629);

System.out.println("服務器端已運行,等待客戶端連接:”);

Socketsocket=ss.accept。;//接收客戶端的連接請求;

BufferedReaderin=newBufferedReaderfnew

InputStreamReader(socket.getlnputStreamO));

PrintWriterout=new

PrintWriter(socket.getOutputStream。,true);

BufferedReaderbr=newBufferedReaderfnew

InputStreamReader(System.in));

Stringline;

while(true)

{line=(in.readLine().trim());

if(line?equals(”BYE"))

{out.println("BYE'^);

out.closeQ;

in.close();

socket.close();

br.closeQ;

ss.closeQ;

break;}

System.out.printing客戶輸入為:"+line);

System.out.println("請輸入回答:“);

line=br.readLine();〃從鍵盤上輸入信息;

out.println(line);//向對方發(fā)送信息

}}

catch(lOExceptione){}

)

publicstaticvoidmain(String[]args)throwsException!

newServerf);

}

}

13、TCP客戶端須要向服務器端8629發(fā)出連接請求,與服務器進行信

息溝通,當收到服務器發(fā)來的是“BYE”時,立刻向對方發(fā)送“BYE”,

然后關閉連接,否則,接著向服務器發(fā)送信息。

importjava.io.*;

import.*;

classClient2{

publicClient2()

{try

{Strings;

Socketsocket=newSocket("服務器地址”,8629);

BufferedReaderin=newBufferedReaderfnew

InputStreamReader(socket.getlnputStreamO));

PrintWriterout=new

PrintWriter(socketgetOutputStrearn。,true);

BufferedReaderline=newBufferedReaderfnew

InputStreamReader(System.in));

while(true)

{System.out.println("請向服務器輸出一條字符串:");

s=line.readLine();

out.println(s);〃向服務器發(fā)出信息;

s=in-readLineO.trim();//收到服務器發(fā)來的信

息;

System.out.println("服務器返回的信息是:");

System.out.println(s);

ifts.equalsC'BYE0))

{out.println(“BYE”);

line.closeQ;

out.closeQ;

in.closeQ;

socket.closeQ;break;}

catch(lOExccptionc){)

publicstaticvoidmain(String[]args){

newClient2();

})

14、UDP接收端

importjava.io.*;

import.*;

classServer{

publicstaticvoidmain(String[]args){

newUDPServer();}

}

classUDPServer{

publicUDPServerQ{

try{

DatagramSocketsocket=newDatagramSocket(1986);//建立

一個Socket連接

System.out.println("服務器IP:"+

InetAddress.getLocalHost().getHostAddress());//顯示服務器信息

while(true){

//接收

bytc[]instr=newbytc[200];

DatagramPacketreceive=newDatagramPacket(instr,

instr,length);

socket.receive(eeceive);//接收客戶機發(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("服務器發(fā)送消息:”);

str=newBufferedReaderfnew

InputStreamReader(System.in)).readLine();//得至!j輸入的數(shù)據(jù)

byte[]outstr=newbyte[str.length()];

outstr=str.getBytesQ;

Data

溫馨提示

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

評論

0/150

提交評論