深圳大學-java程序設計--網絡編程應用
《深圳大學-java程序設計--網絡編程應用》由會員分享,可在線閱讀,更多相關《深圳大學-java程序設計--網絡編程應用(11頁珍藏版)》請在裝配圖網上搜索。
深 圳 大 學 實 驗 報 告課程名稱:Java 程序設計 實驗項目名稱: 必實驗 6 網絡編程應用 學院: 計算機與軟件學院 專業(yè): 指導教師:尹劍飛 報告人: 黃鋼 學號: 2016150170 班級: 計軟 4 班 實驗時間: 2017 年 12 月 19 日(周一)-2017 年 12 月 29 日(周四)實驗報告提交時間: 2017 年 12 月 28 日星期四 教務部制實驗目的與要求:實驗目的: 掌握網絡通信協議及相關程序設計。實驗要求:(1). 利用數據報通信方式試編寫一程序,該程序生成兩個客戶端,一個服務器端,兩個客戶端可以相互進行簡短的文字交流。在報告中附上程序截圖、完整的運行結果和簡要文字說明。 (50 分)(2). 編寫 Java 應用程序,根據作業(yè)“單機版中英文單詞測試程序”的要求,將之改為網絡版。客戶端和服務器端建立套接字連接后,服務器端向客戶端發(fā)送一個英文單詞和四個中文解釋(分別為 A,B,C,D) ,假設只有一個解釋是正確的;客戶端將答案發(fā)送給服務器端;服務器端判斷客戶端的答案是否正確,并將已經給出的題目的數量和答對的數量返回給客戶端,同時也把下一個英文單詞和四個中文解釋發(fā)送給客戶端;如此循環(huán) 10 次結束單詞測試。要求使用圖形界面。詞庫應至少包含 10 個英文單詞和相應的正確解釋和錯誤解釋。在報告中附上程序截圖、完整的運行結果和簡要文字說明。 (50分)說明:(1)本次實驗課作業(yè)滿分為 100 分,占總成績的比例(待定) 。(2)本次實驗課作業(yè)截至時間 2017 年 12 月 29 日(周四)23:59。(3)報告正文:請在指定位置填寫,本次實驗需要單獨提交源程序文件。(4)個人信息:WORD 文件名中的 “姓名” 、 “學號” ,請改為你的姓名和學號 ;實驗報告的首頁,請準確填寫“學院” 、 “專業(yè)” 、 “報告人” 、 “學號” 、 “班級” 、 “實驗報告提交時間”等信息。(5)提交方式:截至時間前,請在 MOOC 平臺中提交;截至時間后一周內提交(即延遲提交) ,請發(fā)郵件到 yjf@szu.edu.cn,并在郵件中注明課程名稱、作業(yè)名稱、姓名、學號等信息,我收到后會及時回復。(6)發(fā)現抄襲(包括復制& 粘貼整句話、整張圖) ,該次作業(yè)記零分。(7)延遲提交(即 2017 年 12 月 29 日 23:59 之后) ,不得分。(8)期末考試階段補交無效。(1). 利用數據報通信方式試編寫一程序,該程序生成兩個客戶端,一個服務器端,兩個客戶端可以相互進行簡短的文字交流。在報告中附上程序截圖、完整的運行結果和簡要文字說明。(50 分)首先在服務器端建立兩個 Node 對象(用來標識不同客戶端) ,即 client1 和 client2 的address 和 port。然后在主線程中啟動死循環(huán),在每次循環(huán)中開啟一個 DatagramSocket 對象來接收數據包,當接收到數據包后,解析出它是由哪個客戶端發(fā)過來的,然后在最開始建立的兩個 Node 對象中找到該數據報應該發(fā)往哪個客戶端(總共兩個 Node,除了本身,另一個就是發(fā)送地址) 。找到發(fā)送地址后,將其與數據報作為參數創(chuàng)建 Server 對象(實現了 Runnable 接口) ,開啟Server 的線程將數據報發(fā)送到另一個客服端,一次信息傳遞結束。接著可以進行第二次信息傳送(無論從哪個客戶端發(fā)信息都可以) 。注:由于在同一臺機器上的 IP 地址相同,光靠 address 來區(qū)分不同客戶端是不現實的,所以還需要加上端口號。因此,在同一臺機器上,client1 和 client2 的代碼之間的區(qū)別就只是用來接收和發(fā)送數據包的 DatagramSocket 的端口號不同。若是服務端在不同機器上,則端口號也可以相同。此外,客服端在接收信息時,可能受到電腦防火墻的阻止,要注意一下(在這里我找了好久的 bug。 。 。 ) 。服務端首先開啟 MyService,執(zhí)行死循環(huán),在循環(huán)中為每一個發(fā)送數據報的客服端分配一個工作線程,來將信息發(fā)給相應的客戶端。代碼如下:工作線程由類 Server 提供:從主線程中得到接收端的 address 和 port,以及需要發(fā)送的信息,在 run 方法中,將信息發(fā)送給接收端。客戶端界面如下:最下面的文本框用來輸入想要發(fā)送的信息,然后點擊 Send,就會發(fā)送到另一個客戶端上,在 Received Message 下面是用來顯示聊天記錄的,自己發(fā)送的信息顯示在聊天記錄中會加上“I: ”來區(qū)分,對方發(fā)送的則會加上“him: ”。Clear 按鈕是用來清空聊天記錄的主線程負責信息的發(fā)送,另外開啟工作線程進行數據的接收,即 run 方法,run 方法中是一個死循環(huán),一直在等待接收信息,接收到信息后,在聊天記錄中顯示,并開始下一次循環(huán)。Run 方法代碼如下運行結果:(2). 編寫 Java 應用程序,根據作業(yè)“單機版中英文單詞測試程序”的要求,將之改為網絡版。客戶端和服務器端建立套接字連接后,服務器端向客戶端發(fā)送一個英文單詞和四個中文解釋(分別為 A,B,C,D) ,假設只有一個解釋是正確的;客戶端將答案發(fā)送給服務器端;服務器端判斷客戶端的答案是否正確,并將已經給出的題目的數量和答對的數量返回給客戶端,同時也把下一個英文單詞和四個中文解釋發(fā)送給客戶端;如此循環(huán) 10 次結束單詞測試。要求使用圖形界面。詞庫應至少包含 10 個英文單詞和相應的正確解釋和錯誤解釋。在報告中附上程序截圖、完整的運行結果和簡要文字說明。 (50 分)網絡版的中英文單詞測試程序分為兩部分:服務端和客戶端。服務端采取多線程處理套接字連接,可以為多個客戶端同時提供服務(但是在本實驗中,如果想要啟動多個客戶端,則需要修改端口號) 。服務端有兩個類:MyService 和 Handler。MyService 主要用來為每一個客戶端分配一個工作線程(由 Server 提供) 。服務器的主線程(MyService 的 main 方法)負責接收客戶的連接,每收到一個連接請求,就創(chuàng)建一個線程負責與客戶通信。Server 主要實現 Runnable 接口,在 run 方法中,有一個執(zhí)行 10 次的循環(huán),每次循環(huán),負責向客戶端發(fā)送一個英文單詞和四個中文解釋(即 5 個 String) ,然后接收客戶端發(fā)回來的選項(String ) ,判斷結果是否正確,向客戶端發(fā)送正確數和做題總數。最后線程暫停 3 秒鐘。客戶端界面如下:界面實現與必實驗 5 類似。整個界面中只有輸入選項的文本框實現了監(jiān)聽接口,用于將答案發(fā)送至服務端進行判斷??蛻舳说?run 方法是用來更新界面的,當輸入上一題的答案后,主動更新到下一題,不需要手動操作。代碼如下:Myservice 類的主要執(zhí)行代碼:當接收到客戶端請求時,開啟 Handler 的線程。run 方法如下:getFour 用來生成 4 個選項,并返回正確選項是第幾個。Handler 的 run 方法。詳細代碼見附件。運行結果:先啟動服務器端,再啟動客戶端。++++++++++++++++++++++++++++++++++++++++++++++++++++++其他(例如感想、建議等等) 。深圳大學學生實驗報告用紙指導教師批閱意見:成績評定:指導教師簽字:2017 年 月 日備注:注:1、報告內的項目或內容設置,可根據實際情況加以調整和補充。2、教師批改學生實驗報告時間應在學生提交實驗報告時間后 10 日內。- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 深圳大學 java 程序設計 網絡 編程 應用
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.820124.com/p-359731.html