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