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