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

正文內(nèi)容

基于java套接字的實(shí)現(xiàn)多點(diǎn)互動(dòng)通訊系統(tǒng)-在線(xiàn)瀏覽

2025-01-10 22:01本頁(yè)面
  

【正文】 的出現(xiàn)標(biāo)志著首個(gè)非 UNIX/Linux 使用者用于因特網(wǎng)的即時(shí)通訊的系統(tǒng)軟件。ICO 是由幾個(gè)年輕的以色列人于 1996 年開(kāi) 發(fā)出來(lái),考慮到無(wú)人投資, ICO公司決定提供全球互聯(lián)網(wǎng)用戶(hù)免費(fèi)下載使用軟件。成為許多看重其巨大商業(yè)廣告價(jià)值的大公司爭(zhēng)著購(gòu)買(mǎi)的對(duì)象。如今 ICO有 1億多使用者,它的主要市場(chǎng)是在歐洲和美洲,可以說(shuō)它是世界上最大的即時(shí)通訊系統(tǒng)。人們通過(guò)網(wǎng)絡(luò)方式獲取信息的需求越來(lái)越高。 近些年,用戶(hù)使用即時(shí)通訊系統(tǒng)軟件的頻率越來(lái)越高,它已經(jīng)取代了 在人們生活中的重要性。因此,對(duì)通訊系統(tǒng)軟件的研究和開(kāi)發(fā)很有很強(qiáng)的實(shí)際應(yīng)用價(jià)值。一個(gè)是服務(wù)器端程序:服務(wù)器端程序能夠不斷的監(jiān)聽(tīng)是否有客戶(hù)端連接,服務(wù)器采用的是 MYSQL 數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)用戶(hù)數(shù)據(jù);另一個(gè)是客戶(hù)端程序:客戶(hù)端程序是在實(shí)際用戶(hù)機(jī) 子上運(yùn)行的程序。能夠?qū)崿F(xiàn)用戶(hù)之間的即時(shí)通訊。 3系統(tǒng)可行性分析 本系統(tǒng)著力完成用戶(hù)和用戶(hù)之間的信息交流,實(shí)現(xiàn)多點(diǎn)的通訊。幾臺(tái)電腦運(yùn)行客戶(hù)端程序,因?yàn)楝F(xiàn)在自己每個(gè)同學(xué)幾乎都有一臺(tái)電腦,所以要滿(mǎn)足這要求一點(diǎn)也不困難。在幾周時(shí)間內(nèi)完成自己完全可以接受。所以開(kāi)發(fā)此系統(tǒng)完全是可行的。套接字允許程序員把網(wǎng)絡(luò)連接當(dāng)成一個(gè)流,并向這個(gè)流讀寫(xiě)字節(jié)。 Socket 和ServerSocket都被放在 。首先通過(guò) ServerSocket 類(lèi)在服務(wù)器某固定端口等待連接,當(dāng)有 Socket 請(qǐng)求連接到此服務(wù)器的此端口時(shí),就完成 Socket連接,然后相互之間就可以發(fā)送和接收信息。 Socket 類(lèi)的消息收發(fā)都是通過(guò)流來(lái)實(shí)現(xiàn)。通過(guò) close()方法關(guān)閉已建立的套接字。 ServerSocket類(lèi)通過(guò) new ServerSocke()能實(shí)現(xiàn)等待某客戶(hù)端的連接請(qǐng)求的功能。 數(shù)據(jù)報(bào)通信 在 TCP/IP 協(xié)議中有一個(gè)重要的定義,那就是 IP 數(shù)據(jù)報(bào) (IP Datagram)。它和硬件的配置無(wú)關(guān),是由兩部分組成:首部和數(shù)據(jù)。根據(jù)需要進(jìn)行相應(yīng)分配。 [3] 多線(xiàn)程編程 多線(xiàn)程的目的是使對(duì) CPU 的利用率提高到最大。實(shí)現(xiàn)多任務(wù)就可以通過(guò)多線(xiàn)程。在內(nèi)存中每個(gè)進(jìn)程都是獨(dú)立占用的內(nèi)存空間。例如火車(chē)的售票系統(tǒng),在售票系統(tǒng)運(yùn)行過(guò)程中,在同一時(shí)間可能有很多人在進(jìn)行買(mǎi)票操作。在操作系統(tǒng)中,每個(gè)線(xiàn)程都會(huì)有一個(gè)優(yōu)先級(jí)。 Java 實(shí)現(xiàn)多線(xiàn)程有兩種方式:通過(guò)繼承 類(lèi)和實(shí)現(xiàn) 接口。使用 Thread 類(lèi)最簡(jiǎn)單的方法是擴(kuò)展它,并覆蓋 run()方法,當(dāng)線(xiàn)程啟動(dòng)時(shí)會(huì)調(diào)用這個(gè)方法。 [5] Runnable 接 口 雖然擴(kuò)展 Thread 類(lèi)是創(chuàng)建多線(xiàn)程應(yīng)用程序的一種方法,但是,它通常不是最好的方法。這意味著,如果一個(gè)類(lèi)擴(kuò)展了 Thread 類(lèi),它就不能擴(kuò)展其他類(lèi)。 Runnable 接口接口定義了一個(gè)方法, run(),必須實(shí)現(xiàn)這個(gè)方法。 5總體設(shè)計(jì) 該多點(diǎn)互動(dòng)通訊系統(tǒng)采用的是 C/S 架構(gòu),采用客戶(hù)機(jī) /服務(wù)器 (C/S)模式來(lái)設(shè)計(jì),是一個(gè)二層的 C/S 結(jié)構(gòu),其分層機(jī)構(gòu)如圖 1所示。給即時(shí)通訊工具設(shè)計(jì)一個(gè)客戶(hù)層具有很多優(yōu)點(diǎn),這是因?yàn)榭蛻?hù)層擔(dān)負(fù)著用戶(hù)與應(yīng)用間的對(duì)話(huà)功能。為了使用戶(hù)能直接地進(jìn)行操作,客戶(hù)層需要使用圖形用戶(hù)接口。 服務(wù)層又叫做功能層,相當(dāng)于應(yīng)用的本體,它是將具體的業(yè)務(wù)處理邏輯編入程序中。在應(yīng)用設(shè)計(jì)中,必須避免在表示層和功能層之間進(jìn)行多次的數(shù)據(jù)交換,這就需要盡可能進(jìn)行一次性的業(yè)務(wù)處理,達(dá)到優(yōu)化整體設(shè)計(jì)的目的。 根據(jù)以上描述,該系統(tǒng)功能模塊圖如圖 2 所示 圖 2 多點(diǎn)互動(dòng)通訊功能模塊圖 服務(wù)器端功能設(shè)計(jì) 在服務(wù)器端的 程序具有以下的功能實(shí)現(xiàn): (1)開(kāi)啟服務(wù)器程序,進(jìn)行監(jiān)聽(tīng),接收客戶(hù)端連接。 (3)關(guān)閉服務(wù)器端的程序,并向所有已連客戶(hù)端發(fā)送服務(wù)器端程序已關(guān)閉消息。 (2)請(qǐng)求連接服務(wù)器,并把此用戶(hù)登錄請(qǐng)求發(fā)給服務(wù)器端。 (4)隨時(shí)可以接收服務(wù)器端轉(zhuǎn)發(fā)過(guò)來(lái)的消息。 界面設(shè)計(jì) 服務(wù)器端功能設(shè)計(jì) 在服務(wù) 器端的界面設(shè)計(jì)實(shí)現(xiàn):有兩個(gè)按鈕,分別是開(kāi)啟服務(wù)和停止服務(wù),把這兩個(gè)按鈕放入一個(gè)面板中,然后把此面板放入到窗體中。 客戶(hù)器界面設(shè)計(jì) 在客戶(hù)端設(shè)計(jì)了五個(gè)界面:登入界面、注冊(cè)界面、好友界面、聊天界面、修改密碼界面。還有三個(gè)按鈕:登錄、取消、注冊(cè)向?qū)?。注?cè)界面能實(shí)現(xiàn)用戶(hù)輸入申請(qǐng)的賬號(hào),設(shè)置 密碼。 (3)好友界面設(shè)計(jì)實(shí)現(xiàn):登錄成功后,進(jìn)入好友界面。當(dāng)點(diǎn)擊我的好友時(shí),能實(shí)現(xiàn)我的好友列表,當(dāng)點(diǎn)擊陌生人時(shí),能實(shí)現(xiàn)陌生人列表。聊天界面包括:聊天內(nèi)容顯示、輸入聊天信息、發(fā)送聊天信息。修改密碼界面能實(shí)現(xiàn)輸入賬號(hào)、原有密碼和需要修改的密碼。 6詳細(xì)設(shè)計(jì) 服務(wù)器端詳細(xì)設(shè)計(jì) 界面設(shè)計(jì) 在 java 程序中,我們可以通過(guò)自己編寫(xiě)的類(lèi)繼承 JFrame 類(lèi)的方法實(shí)現(xiàn)要?jiǎng)?chuàng)建的窗體。我們要在窗體內(nèi)加入一個(gè)裝有控制按鈕的面板 (JPanel)。 jButton_start=new JButton(。)。 jButton_stop=new JButton(。)。 (jButton_start)。 (jPanel_show)。下面就服務(wù)器端功能進(jìn)行設(shè)計(jì)。當(dāng)點(diǎn)擊 jButton_start 時(shí),跳出是否開(kāi)啟服務(wù)器的對(duì)話(huà)框。監(jiān)聽(tīng)通過(guò)()語(yǔ)句返回一個(gè)連接客戶(hù)端的 Socket。 //有連接則返回此套接字的連接 . socket=()。沒(méi)有則把 Message 的 類(lèi) 型 設(shè) 為 , 然 后 通 過(guò)()把此消息發(fā)給客戶(hù)端,并且關(guān)閉此 Socket。userLogin。 //返回給用戶(hù)一個(gè)登入成功的消息 (m)。 ((), Serve_thread)。 // notify Other who online (())。 (m)。 } } 接收到客戶(hù)端 User 后判斷為注冊(cè)標(biāo)志時(shí),則得到用戶(hù)要注冊(cè)的用戶(hù)賬號(hào),通過(guò) ()方法查找 MYSQL 數(shù)據(jù)庫(kù)中是否有此用戶(hù)賬號(hào),有則把Massage 的類(lèi)型設(shè)為注冊(cè)不成功標(biāo)志。關(guān)鍵代碼如下: if(().equals(。)) { if(((), (), ())) { (。)。registerFail。 (m)。 } 接收到客戶(hù)端 User 后判斷為修改密碼標(biāo)志時(shí),則通過(guò) UserDao 類(lèi)中的getPwdById() 方法判斷 MYSQL 數(shù)據(jù)庫(kù)中是否有此用戶(hù),有則通過(guò)((), ())更新用戶(hù)密碼,并把 Massage的類(lèi)型設(shè)為成功修 改密碼標(biāo)志,通過(guò) ()把此消息發(fā)給客戶(hù)端,發(fā)完后關(guān)閉在服務(wù)器端的此用戶(hù)連接的 Socket;反之把 Massage 的類(lèi)型設(shè)為修改密碼失敗標(biāo)志,通過(guò) ()把此消息發(fā)給客戶(hù)端。關(guān)鍵代碼如下: if(().equals((()))) { ((), ())。changePwdSuccess。 (())。changePwdFail。 (m)。 按下 jButton_stop 時(shí),跳出是否關(guān)閉服務(wù)器對(duì)話(huà)框。并通過(guò) notifyAllUserServerDown()通知所有在線(xiàn)用戶(hù)服務(wù) 器已關(guān)閉。 Iterator it=().iterator()。 ()。 try { Socket socket=(onLineUserId).getSocket()。 (onLine
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1