網(wǎng)絡(luò)編程試卷及答案_第1頁(yè)
網(wǎng)絡(luò)編程試卷及答案_第2頁(yè)
網(wǎng)絡(luò)編程試卷及答案_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、A1、Java網(wǎng)絡(luò)程序位于TCP/IP參考模型的哪一層?(B) a) 網(wǎng)絡(luò)層互聯(lián)層b) 應(yīng)用層c) 傳輸層網(wǎng)絡(luò)d) 主機(jī)-網(wǎng)絡(luò)層2、以下哪些協(xié)議位于傳輸層?(A D) a) TCP b) HTTP c) SMTP d) UDP f)IP3、一個(gè)服務(wù)器進(jìn)程執(zhí)行以下代碼:ServerSocket serverSocket=new ServerSocket(80);Socket socket=serverSocket.accept();int port=socket.getPort();以下哪些說法正確?(A C D) a) 服務(wù)器進(jìn)程占用80端口。b) socket.getPort()方法返回服務(wù)

2、器進(jìn)程占用的本地端口,此處返回值是80。c) 當(dāng)serverSocket.accept()方法成功返回,就表明服務(wù)器進(jìn)程接收到了一個(gè)客戶連接請(qǐng)求。d) socket.getPort()方法返回客戶端套節(jié)字占用的本地端口。4、在客戶/服務(wù)器通信模式中,客戶與服務(wù)器程序的主要任務(wù)是什么?(B C)a) 客戶程序在網(wǎng)絡(luò)上找到一條到達(dá)服務(wù)器的路由。b) 客戶程序發(fā)送請(qǐng)求,并接收服務(wù)器的響應(yīng)。c) 服務(wù)器程序接收并處理客戶請(qǐng)求,然后向客戶發(fā)送響應(yīng)結(jié)果。d) 如果客戶程序和服務(wù)器都會(huì)保證發(fā)送的數(shù)據(jù)不會(huì)在傳輸途中丟失。1、B 2、A D 3、A C D 4、B C二、填空題(郵件)1、名詞解釋 SMTP:(

3、 )2、主要的SMTP命令SMTP命令說明( )指明郵件發(fā)送者的主機(jī)地址( )指明郵件接收者的郵件地址( )表示接下來將發(fā)送郵件內(nèi)容1、簡(jiǎn)單郵件傳輸協(xié)議2、HELP/EHLO MAILFROM ECPT TO DATA三、簡(jiǎn)答題(線程池)寫出五種使用線程池時(shí)應(yīng)注意的事項(xiàng),并進(jìn)行簡(jiǎn)要說明?線程池可能會(huì)帶來種種風(fēng)險(xiǎn):1死鎖2系統(tǒng)資源不足3并發(fā)錯(cuò)誤4線程泄漏5任務(wù)過載使用線程池時(shí)需要遵循以下原則:(1)如果任務(wù)A在執(zhí)行過程中需要同步等待任務(wù)B的執(zhí)行結(jié)果,那么任務(wù)A不適合加入到線程池的工作隊(duì)列中。(2)如果執(zhí)行某個(gè)任務(wù)時(shí)可能會(huì)阻塞,并且是長(zhǎng)時(shí)間的阻塞,則應(yīng)該設(shè)定超時(shí)時(shí)間,避免工作線程永久的阻塞下去而導(dǎo)

4、致線程泄漏。(3)根據(jù)任務(wù)的特點(diǎn),對(duì)任務(wù)進(jìn)行分類,然后把不同類型的任務(wù)分別加入到不同線程池的工作隊(duì)列中,這樣可以根據(jù)任務(wù)的特點(diǎn),分別調(diào)整每個(gè)線程池。(4)調(diào)整線程池的大小。線程池的最佳大小主要取決于系統(tǒng)的可用CPU的數(shù)目以及工作隊(duì)列中任務(wù)的特點(diǎn)。(5)避免任務(wù)過載。四、JAVA對(duì)客戶程序的通信過程進(jìn)行了抽象,提供了通用的協(xié)議處理框架,請(qǐng)用UML圖顯示客戶端協(xié)議處理框架的主要對(duì)象模型。(20分)五、編程題用JAVA編寫客戶、服務(wù)器程序(利用ServerSocket和Socket編寫)1、 創(chuàng)建EchoServer(寫出主要程序代碼并注釋 2、輸出流輸入流通用方法3、EchoServer類最主要方

5、法為service()方法,寫出其方法中的代碼。4、寫出創(chuàng)建EchoClient的構(gòu)造方法 5、EchoClient類中,最主要的方法為talk()方法,寫出其方法源代碼。public EchoServer() throws IOException serverSocket = new ServerSocket(port); System.out.println(服務(wù)器啟動(dòng)); private PrintWriter getWriter(Socket socket)throws IOException OutputStream socketOut = socket.getOutputStrea

6、m(); return new PrintWriter(socketOut,true); private BufferedReader getReader(Socket socket)throws IOException InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn); public void service() while (true) Socket socket=null; try socket = serverSocket.a

7、ccept(); /等待客戶連接System.out.println(New connection accepted +socket.getInetAddress() + : +socket.getPort(); BufferedReader br =getReader(socket); PrintWriter pw = getWriter(socket); String msg = null; public EchoClient()throws IOException socket=new Socket(host,port); B一選擇題下列各題A、B、C、D四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的

8、。 請(qǐng)將正確的結(jié)果打、問題:關(guān)于ServerSocket構(gòu)造方法的backlog參數(shù),以下哪些說法是正確的?(a b d f) a) backlog參數(shù)用來顯式設(shè)置操作系統(tǒng)中的連接請(qǐng)求隊(duì)列的長(zhǎng)度。b)如果沒有設(shè)置backlog參數(shù),那么連接請(qǐng)求隊(duì)列的長(zhǎng)度由操作系統(tǒng)決定。c)當(dāng)服務(wù)器端的連接請(qǐng)求隊(duì)列已滿,客戶端就無法建立與服務(wù)器的連接。d)如果backlog參數(shù)的值大于操作系統(tǒng)限定的隊(duì)列的最大長(zhǎng)度,那么backlog參數(shù)被忽略。e)連接請(qǐng)求隊(duì)列直接由ServerSocket創(chuàng)建并管理。f) ServerSocket的accept()方法從連接請(qǐng)求隊(duì)列中取出連接請(qǐng)求。、問題:對(duì)于以下程序代碼:Se

9、rverSocket serverSocket=new ServerSocket(8000);serverSocket.setReuseAddress(true); 哪個(gè)說法是正確的?(C) a)以上代碼運(yùn)行時(shí)出錯(cuò)b)以上代碼編譯時(shí)出錯(cuò)c)以上代碼盡管編譯和運(yùn)行不會(huì)出錯(cuò),但對(duì)SO_REUSEADDR選項(xiàng)的設(shè)置無效d)以上說法都不正確、如何判斷一個(gè)ServerSocket已經(jīng)與特定端口綁定,并且還沒有被關(guān)閉? (B) a) boolean isOpen=serverSocket.isBound(); b)boolean isOpen=serverSocket.isBound() & !serve

10、rSocket.isClosed();c) boolean isOpen=serverSocket.isBound() & serverSocket.isConnected(); d) boolean isOpen=!serverSocket.isClosed();、問題:對(duì)于以下代碼:int n=socketChannel.read(byteBuffer); /假定n=0 byteBuffer.flip();假定執(zhí)行socketChannel.read(byteBuffer)方法前,byteBuffer的容量、極限和位置分別為c、l和p,執(zhí)行完以上代碼后,byteBuffer的容量、極限和位

11、置分別是多少? B a) 容量為c,極限為l,位置為p+n b) 容量為c,極限為p+n,位置為0 c) 容量為l,極限為p+n,位置為0 d) 容量為c,極限為p+n,位置為p+n、問題:線程執(zhí)行Selector對(duì)象的select(long timeout)方法時(shí)進(jìn)入阻塞狀態(tài),在哪些情況,線程會(huì)從select()方法中返回? (abde)a) 至少有一個(gè)SelectionKey的相關(guān)事件已經(jīng)發(fā)生。b) 其他線程調(diào)用了Selector對(duì)象的wakeup()方法。c) 與Selector對(duì)象關(guān)聯(lián)的一個(gè)SocketChannel對(duì)象被關(guān)閉。d) 當(dāng)前執(zhí)行select()方法的線程被其他線程中斷。e

12、) 超出了等待時(shí)間。、問題: 在HTTP響應(yīng)結(jié)果中,哪個(gè)狀態(tài)代碼表示響應(yīng)成功?選項(xiàng):D a)404 b)405 c)500 d)200、問題:對(duì)于HTTP的GET請(qǐng)求方式,用戶提交的表單數(shù)據(jù)位于HTTP請(qǐng)求的哪一部分?A選項(xiàng):a) 請(qǐng)求頭中 b)請(qǐng)求正文中一、選擇題 1、a b d f 2、c 3、b 4、b 5、abde 6、d 7、a二、JAVA對(duì)客戶程序的通信過程進(jìn)行了抽象,提供了通用的協(xié)議處理框架,請(qǐng)用UML圖顯示客戶端協(xié)議處理框架的主要對(duì)象模型。三、填空題協(xié)議規(guī)定,請(qǐng)求由部分構(gòu)成,分別是:請(qǐng)求:請(qǐng)求方式、協(xié)議版本請(qǐng)求頭請(qǐng)求正文與請(qǐng)求相似,響應(yīng)也由部分構(gòu)成,分別是:響應(yīng):協(xié)議版本、狀態(tài)

13、代碼、描述響應(yīng)頭響應(yīng)正文四、編程題創(chuàng)建非阻塞的EchoServer 1、處理接收連接就緒事件 、處理讀就緒事件 、處理寫就緒事件 、編碼與解碼、在非阻塞模式下確保發(fā)送一行數(shù)據(jù) 、刪除ByteBuffer中的已處理數(shù)據(jù)/創(chuàng)建一個(gè)Selector對(duì)象selector = Selector.open();/創(chuàng)建一個(gè)ServerSocketChannel對(duì)象serverSocketChannel= ServerSocketChannel.open();/使得在同一個(gè)主機(jī)上關(guān)閉了服務(wù)器程序,緊接著再啟動(dòng)該服務(wù)器程序時(shí),/可以順利綁定到相同的端口serverSocketChannel.socket().s

14、etReuseAddress(true);/使ServerSocketChannel工作于非阻塞模式serverSocketChannel.configureBlocking(false);/把服務(wù)器進(jìn)程與一個(gè)本地端口綁定serverSocketChannel.socket().bind(new InetSocketAddress(port);public void service() throws IOException serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT ); while (selector.selec

15、t() 0 ) /第一層while循環(huán) Set readyKeys = selector.selectedKeys(); /獲得Selector的selected-keys集合 Iterator it = readyKeys.iterator(); while (it.hasNext() /第二層while循環(huán) SelectionKey key=null; try /處理SelectionKey key = (SelectionKey) it.next(); /取出一個(gè)SelectionKey it.remove(); /把SelectionKey從Selector的selected-key集合中刪除 if (key.isAcceptable() 處理接收連接就緒事件; if (key.isReadable() 處理讀就緒事件; if (key.isWritable() 處理寫就緒事件; catch(IOException e)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論