網絡編程試卷及答案_第1頁
網絡編程試卷及答案_第2頁
網絡編程試卷及答案_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

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

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

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

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

5、法為service()方法,寫出其方法中的代碼。4、寫出創建EchoClient的構造方法 5、EchoClient類中,最主要的方法為talk()方法,寫出其方法源代碼。public EchoServer() throws IOException serverSocket = new ServerSocket(port); System.out.println(服務器啟動); 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四個選項中,只有一個選項是正確的

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

9、rverSocket serverSocket=new ServerSocket(8000);serverSocket.setReuseAddress(true); 哪個說法是正確的?(C) a)以上代碼運行時出錯b)以上代碼編譯時出錯c)以上代碼盡管編譯和運行不會出錯,但對SO_REUSEADDR選項的設置無效d)以上說法都不正確、如何判斷一個ServerSocket已經與特定端口綁定,并且還沒有被關閉? (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();、問題:對于以下代碼:int n=socketChannel.read(byteBuffer); /假定n=0 byteBuffer.flip();假定執行socketChannel.read(byteBuffer)方法前,byteBuffer的容量、極限和位置分別為c、l和p,執行完以上代碼后,byteBuffer的容量、極限和位

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

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

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

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

15、t() 0 ) /第一層while循環 Set readyKeys = selector.selectedKeys(); /獲得Selector的selected-keys集合 Iterator it = readyKeys.iterator(); while (it.hasNext() /第二層while循環 SelectionKey key=null; try /處理SelectionKey key = (SelectionKey) it.next(); /取出一個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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論