freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

校內(nèi)通信java課程設(shè)計(jì)論文-資料下載頁(yè)

2025-06-24 23:31本頁(yè)面
  

【正文】 務(wù)器保存處理,需要有專人看管維護(hù)服務(wù)器,顯得更麻煩。所以本系統(tǒng)采用每個(gè)程序自己既充當(dāng)客戶機(jī),又充當(dāng)服務(wù)器,自己來(lái)維護(hù)網(wǎng)絡(luò)上的用戶列表,每?jī)蓚€(gè)客戶端進(jìn)行連接的時(shí)候都直接連通而不用增設(shè)服務(wù)器中轉(zhuǎn)。示意圖如下:工作機(jī)工作機(jī)工作機(jī)當(dāng)然,上述圖示只是通信數(shù)據(jù)的一個(gè)流向示意圖,不是真正的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),也就是說(shuō)其中的服務(wù)器可能只是裝了服務(wù)器軟件的一臺(tái)普通工作站。在底層的數(shù)據(jù)流向中,也就是網(wǎng)絡(luò)的物理連結(jié),并非我們這個(gè)軟件所能決定的,我們的所做都是在一個(gè)透明的數(shù)據(jù)通信層之上的。在該模塊中,使用基于UDP協(xié)議的數(shù)據(jù)報(bào)和套接字實(shí)現(xiàn)計(jì)算機(jī)之間的信息通信。UDP(User Datagram Protocol)協(xié)議就是“用戶數(shù)據(jù)報(bào)協(xié)議”,它是一種無(wú)連接的協(xié)議,在該協(xié)議進(jìn)行數(shù)據(jù)傳輸時(shí),發(fā)送方只需要知道對(duì)方的IP地址和端口號(hào)就可以發(fā)送數(shù)據(jù)了,并不需要進(jìn)行連接,當(dāng)遠(yuǎn)程主機(jī)端口號(hào)處于監(jiān)聽狀態(tài)時(shí),則UDP必須處于連接狀態(tài)。Java中對(duì)UDP數(shù)據(jù)報(bào)的發(fā)送和接收是通過(guò)DatagramSocket類實(shí)現(xiàn)的,DatagramPacket類表示UDP數(shù)據(jù)包,它封裝了數(shù)據(jù)報(bào)的屬性和數(shù)據(jù)[9]。這兩個(gè)類的工作流程圖如下所示:DatagramPacket目的:host:4321DatagramSocket端口:4321Data gramSocket端口 :1234DatagramPacket目的:host:4321DatagramPacket目的:host:4321 DatagramPacket目的:host:4321DatagramSocket端口:4321DatagramSocket端口:1234 DatagamSocket和DatagramPacket類的工作流程圖(1) 創(chuàng)建TelFrame類,在該類中集成Jframe類實(shí)現(xiàn)Swing的窗體,定義窗體需要的所有控件,列入發(fā)送按鈕、接受信息的文本框、輸入發(fā)送信息的文本框、信使按鈕以及各種滾動(dòng)面板等,定義訪問(wèn)數(shù)據(jù)庫(kù)的DAO實(shí)例,在通信窗口右側(cè)顯示的用戶列表使用Dao實(shí)例從數(shù)據(jù)庫(kù)中獲取[10]。(2)getInstance()方法,用于獲取唯一的窗體實(shí)例。該方法創(chuàng)建的所有窗體實(shí)例都會(huì)保存到Map集合類的實(shí)例中,窗體的實(shí)例對(duì)象會(huì)一直保存在這個(gè)集合類中,并且用戶再次打開已存在的窗體時(shí),將直接從集合類中獲取,不再創(chuàng)建新的窗體實(shí)例。關(guān)鍵代碼如下:public static synchronized TelFrame getInstance(DatagramSocket ssArg, DatagramPacket dp, ChatTree treeArg) { String tmpIp = ().getHostAddress()。//獲取數(shù)據(jù)報(bào)的IP地址 if (!(tmpIp)) { //如果集合中不存在該用戶窗體 TelFrame frame = new TelFrame(ssArg, dp, treeArg)。//創(chuàng)建窗體實(shí)例 (tmpIp, frame)。//將窗體實(shí)例保存到集合中 (treeArg)。//接受信息 if (!()) {//如果窗體處于隱藏狀態(tài) (true)。//顯示窗體 } ()。 ()。//將窗體放置在最前端 return frame。 } else { //如果集合中包含該用戶窗體 TelFrame frame = (tmpIp)。//從集合中獲取該窗體實(shí)例 (())。 (treeArg)。//接受信息 if (!()) { (true)。//顯示窗體 } ()。 ()。 return frame。 }(3)在構(gòu)造方法中初始化TelFrame類的所有控件屬性,該構(gòu)造方法接收DatagramSocket、DatagramPacket和chatTree類的三個(gè)參數(shù),他們分別是數(shù)據(jù)socket服務(wù)、數(shù)據(jù)報(bào)和用戶列表的實(shí)例對(duì)象。(4)receiveInfo()方法,用于接收其它用戶發(fā)送的通信信息。該方法中首先從數(shù)據(jù)報(bào)中獲取發(fā)送信息的用戶IP地址,然后從數(shù)據(jù)庫(kù)中獲取該IP用戶的姓名,同時(shí)將這些用戶IP、用戶姓名和發(fā)送時(shí)間以藍(lán)色字體顯示到信息文本框中,最后將數(shù)據(jù)報(bào)中的通信信息文本追加到信息文本框中。關(guān)鍵代碼如下:private void receiveInfo(final ChatTree tree) {// 接收信息 if ( 0) { String rText = new String(buf).replace( + (char) 0, )。 String hostAddress = ().getHostAddress()。 String info = (hostAddress).getName()。 info = info + ( + new Date().tolocaleString()+”)” appendReceiveText(info, )。 appendReceiveText(rText + \n, null)。(5)創(chuàng)建“發(fā)送”按鈕的事件監(jiān)聽器sendActionListener類,它實(shí)現(xiàn)了ActionListener接口,擁有處理按鈕事件的能力,它在actionPerformed()方法中獲取數(shù)據(jù)報(bào)中的通信信息。創(chuàng)建MessageButtonAction內(nèi)部類,該類是“信使”按鈕的事件監(jiān)聽器。當(dāng)用戶輸入通信信息并單擊“信使”按鈕時(shí),監(jiān)聽器則調(diào)用sendMessage()方法將通信信息以系統(tǒng)信使方式發(fā)送到對(duì)方的計(jì)算機(jī)。關(guān)鍵代碼如下:class sendActioListener implements ActionListener { public void actionPerformed(final ActionEvent e) { String sendInfo = getSendInfo()。//獲取發(fā)送信息 if (sendInfo == null) return。 insertUserInfoToReceiveText(tree)。 appendReceiveText(sendInfo + \n, null)。//添加到信息文本框 byte[] tmpBuf = ()。 DatagramPacket tdp = null。 //創(chuàng)建數(shù)據(jù)報(bào) try { tdp = new DatagramPacket(tmpBuf, , new InetSocketAddress(ip, 1111))。//初始化數(shù)據(jù)報(bào) (tdp)。 //發(fā)送數(shù)據(jù)報(bào) } catch (SocketException e2) { ()。 } catch (IOException e1) { ()。 (, e1 .getMessage())。 } (null)。//清空發(fā)送文本框 ()。 //使發(fā)送文本框獲得焦點(diǎn) if (())//如果選擇了“消息模式”復(fù)選框 setState(ICONIFIED)。//則窗體會(huì)最小化 }7總結(jié)在程序編寫的過(guò)程中,文件操作的一些功能并沒(méi)有完全實(shí)現(xiàn), 由于水平有限,盡管查了不少資料也看了網(wǎng)上別人寫有關(guān)程序,可是發(fā)送圖片功能一直未能實(shí)現(xiàn),這也是關(guān)次設(shè)計(jì)的一項(xiàng)缺憾。當(dāng)然,在做這次論文的過(guò)程中,我也發(fā)現(xiàn)了JAVA語(yǔ)言的簡(jiǎn)單和多用的優(yōu)點(diǎn),慢慢產(chǎn)生了興趣,因?yàn)榕R近考試忙于復(fù)習(xí),沒(méi)能深入和廣泛學(xué)習(xí),準(zhǔn)備假期好好學(xué)習(xí)這門語(yǔ)言,然后逐步完善這款軟件并試著運(yùn)用JAVA編寫復(fù)雜程序。這次論文和代碼編寫使我們小組共同完成的,在這里,表示感謝。 雖然這次JAVA程序設(shè)計(jì)還有很多地方需要改進(jìn),但是我的確用心去做了,從中我收獲的不止是JAVA的知識(shí),還有嚴(yán)謹(jǐn),認(rèn)真,獨(dú)立和自信,相信在以后的努力中,我會(huì)把這門語(yǔ)言學(xué)得很好!8致謝這次實(shí)訓(xùn)過(guò)程中, 我也遇到了一些困難,主要表現(xiàn)了技術(shù)和經(jīng)驗(yàn)的欠缺,首先感謝我的指導(dǎo)教師曾毅,百忙之中抽出寶貴時(shí)間在本篇論文的寫作過(guò)程中給予了大量的指導(dǎo)點(diǎn)評(píng)以及對(duì)細(xì)節(jié)方面提出的整改和修復(fù)的寶貴意見,在此表示深深的感謝。參考文獻(xiàn)[1]實(shí)戰(zhàn)突擊Java項(xiàng)目開發(fā)案例整合 電子工業(yè)出版社2011 .[2]Java課程設(shè)計(jì) 案例精編(第二版) 清華大學(xué)出版社 2011 .[3]李鐘尉、陳丹丹 .Java項(xiàng)目開發(fā)案例全程 .清華大學(xué)出版社 . 2011 . [4] 郎波 . Java語(yǔ)言程序設(shè)計(jì) . 清華大學(xué)出版社 . 20055 . [5]周惠英 .Java2入門、進(jìn)階與應(yīng)用實(shí)例 . 人民郵電出版社 .20073 . [6] 劉升華 . JAVA從入門到實(shí)踐 . 清華大學(xué)出版社 . 20099 .[7]耿祥義、張躍平 . JAVA2實(shí)用教程 . 清華大學(xué)出版社 .20042 . [8]張桂珠、陳愛國(guó) . Java面向?qū)ο蟪绦蛟O(shè)計(jì) .北京郵電大學(xué)出版社 .20062 . [9]史濟(jì)民、顧春華、鄭紅 .軟件工程 .高等教育出版社 .20093 .37
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1