資源描述:
《java多用戶群聊的基于tcp協(xié)議的即時(shí)通訊系統(tǒng)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)(源程序)new》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、課程設(shè)計(jì)說(shuō)明書(shū)基于TCP協(xié)議的即時(shí)通訊系統(tǒng)(JAVA多用戶群聊)研究意義1.1課程設(shè)計(jì)意義及背景在網(wǎng)絡(luò)越來(lái)越發(fā)達(dá)的今天,人們對(duì)網(wǎng)絡(luò)的依賴越來(lái)越多,各種網(wǎng)絡(luò)應(yīng)用層出不窮,網(wǎng)絡(luò)編程越來(lái)越受大廣大程序員的重視。Java語(yǔ)言創(chuàng)建之初的目的之一就是為了能夠很好地進(jìn)行網(wǎng)絡(luò)通信。簡(jiǎn)單的說(shuō),網(wǎng)絡(luò)編程就是與其他計(jì)算機(jī)進(jìn)行信息交換。網(wǎng)絡(luò)編程的目的就是指直接或間接地通過(guò)網(wǎng)絡(luò)協(xié)議與其他計(jì)算機(jī)進(jìn)行通訊。網(wǎng)絡(luò)編程中有兩個(gè)主要的問(wèn)題,一個(gè)是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺(tái)或多臺(tái)主機(jī),另一個(gè)就是找到主機(jī)后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機(jī)的定位,數(shù)據(jù)傳輸?shù)穆酚?,由IP地址可以唯一地確定Intern
2、et上的一臺(tái)主機(jī)。而TCP層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對(duì)象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。目前較為流行的網(wǎng)絡(luò)編程模型是客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶提出請(qǐng)求并予以響應(yīng)??蛻魟t在需要服務(wù)時(shí)向服務(wù)器提出申請(qǐng)。服務(wù)器一般作為守護(hù)進(jìn)程始終運(yùn)行,監(jiān)聽(tīng)網(wǎng)絡(luò)端口,一旦有客戶請(qǐng)求,就會(huì)啟動(dòng)一個(gè)服務(wù)進(jìn)程來(lái)響應(yīng)該客戶,同時(shí)自己繼續(xù)監(jiān)聽(tīng)服務(wù)端口,使后來(lái)的客戶也能及時(shí)得到服務(wù)。1.2研究?jī)?nèi)容1.本次課程設(shè)計(jì)用java語(yǔ)言的AWT和Swing設(shè)計(jì)用戶界面,java語(yǔ)言的網(wǎng)絡(luò)編程和多線程設(shè)計(jì)實(shí)現(xiàn)后臺(tái)。順利完成了一個(gè)實(shí)現(xiàn)了多用戶群聊的基于TCP協(xié)
3、議的即時(shí)通訊系統(tǒng)。2.基于TCP協(xié)議的即時(shí)通訊系統(tǒng)所表示的就是一個(gè)通過(guò)java網(wǎng)絡(luò)編程和多線程實(shí)現(xiàn)的C/S架構(gòu)的簡(jiǎn)單的群聊系統(tǒng),其包括:打開(kāi)服務(wù)器界面,設(shè)置相應(yīng)的合法端口,根據(jù)合法端口啟動(dòng)服務(wù)器,根據(jù)合法的用戶名密碼和端口號(hào)進(jìn)行用戶登陸,服務(wù)器和聊天室的在線用戶列表顯示,客戶端之間的群聊等操作。2.1設(shè)計(jì)要求:完成N個(gè)生產(chǎn)者和M個(gè)消費(fèi)者之間的并發(fā)控制,N、M不低于5,數(shù)據(jù)發(fā)送和接收緩沖區(qū)大小不小于10個(gè)。某個(gè)生產(chǎn)者進(jìn)程生產(chǎn)的消息供K個(gè)消費(fèi)者進(jìn)程消費(fèi)。K《=M。某些消費(fèi)進(jìn)程消費(fèi)多個(gè)生產(chǎn)者生產(chǎn)的消息。生產(chǎn)者和消費(fèi)者之間的對(duì)應(yīng)關(guān)系可以在程序開(kāi)始有一個(gè)文件中讀入,也可以動(dòng)態(tài)調(diào)整。每個(gè)生產(chǎn)進(jìn)程生產(chǎn)M個(gè)消
4、息后結(jié)束運(yùn)行。如果一個(gè)消費(fèi)者進(jìn)程沒(méi)有對(duì)應(yīng)的生產(chǎn)者進(jìn)程在運(yùn)行后,也結(jié)束運(yùn)行。進(jìn)程間通信、并發(fā)(同步/互斥)、文件讀寫(xiě)內(nèi)存管理、Dll、Windows消息機(jī)制、IO(尚未最終定型)3.功能模塊圖服務(wù)器端的主要功能如下。a)在特定端口上進(jìn)行偵聽(tīng),等待客戶端連接。b)用戶可以配置服務(wù)端的偵聽(tīng)端口,默認(rèn)端口為8888。c)向已經(jīng)連接到服務(wù)器端的用戶發(fā)送系統(tǒng)消息。d)統(tǒng)計(jì)在線人數(shù)e)當(dāng)停止服務(wù)時(shí),斷開(kāi)與別的用戶連接??蛻舳说闹饕δ苋缦?。f)連接到已經(jīng)開(kāi)啟聊天服務(wù)的服務(wù)端。g)用戶可以配置要連接服務(wù)器的IP地址與端口號(hào)。h)當(dāng)服務(wù)器開(kāi)啟的話,用戶可以隨時(shí)登錄與退出。i)用戶可以向所有人或者某一個(gè)人發(fā)送消息
5、。本次課程設(shè)計(jì),用到了套接字、數(shù)據(jù)報(bào)通信、URL與URLConnection的相關(guān)技術(shù),實(shí)現(xiàn)了一個(gè)可以進(jìn)行簡(jiǎn)單通信的小型聊天室系統(tǒng)的開(kāi)發(fā)。圖2.1服務(wù)器端功能模塊圖客戶端端口設(shè)置用戶設(shè)置登錄發(fā)送消息連接設(shè)置退出退出圖2.2客戶端功能模塊圖一、系統(tǒng)的功能結(jié)構(gòu)圖基于TCP協(xié)議的即時(shí)通訊系統(tǒng)包含五大功能模塊,分別是服務(wù)器端口設(shè)置,服務(wù)器啟動(dòng),服務(wù)器在線用戶列表顯示,客戶端登陸,客戶端群聊,客戶端在線用戶列表顯示。系統(tǒng)功能結(jié)構(gòu)圖如圖2.8所示。即時(shí)通訊系統(tǒng)系統(tǒng)消息服務(wù)器客戶端端口設(shè)置服務(wù)器啟動(dòng)注冊(cè)、登錄私聊、群聊在線用戶列表停止服務(wù)在線用戶列表圖2.3系統(tǒng)結(jié)構(gòu)圖4.技術(shù)實(shí)現(xiàn)服務(wù)器和客戶端登陸以及客戶端
6、群聊界面利用java語(yǔ)言的AWT和Swing實(shí)現(xiàn),群聊功能利用java語(yǔ)言網(wǎng)絡(luò)編程的多線程和網(wǎng)絡(luò)編程的知識(shí)實(shí)現(xiàn)。5.詳細(xì)設(shè)計(jì)本系統(tǒng)中我們利用Java實(shí)現(xiàn)基于C/S模式的聊天室系統(tǒng),分為服務(wù)器端和客戶端兩部分,運(yùn)用Socket套接字實(shí)現(xiàn)客戶方和服務(wù)方的鏈接,服務(wù)器端通過(guò)端口設(shè)置在特定端口上進(jìn)行監(jiān)聽(tīng),等待客戶端的連接,一旦客戶端連接成功,則可以向連接成功的用戶發(fā)送系統(tǒng)消息,可以接收所有客戶端發(fā)送的消息并顯示;客戶端則與服務(wù)器端規(guī)定的端口進(jìn)行連接,連接成功后可以登錄,登錄成功后便可以和所選的對(duì)象聊天,可以發(fā)送信息,也可以接收聊天對(duì)象所發(fā)送過(guò)來(lái)的信息,并顯示信息內(nèi)容。服務(wù)器客戶端A客戶端B客戶端C客戶
7、端E客戶端D聊天室數(shù)據(jù)流圖5.1服務(wù)器端監(jiān)聽(tīng)功能的實(shí)現(xiàn)服務(wù)器端監(jiān)聽(tīng)功能實(shí)現(xiàn)的流程如下:首先,利用ChatServer.java添加時(shí)間事件偵聽(tīng)與事件處理,來(lái)啟動(dòng)和停止服務(wù),通過(guò)調(diào)用ServerListen.java類實(shí)現(xiàn)對(duì)于服務(wù)器端界面用戶上線與下線功能的監(jiān)聽(tīng),該類對(duì)用戶上線下線的偵聽(tīng)是通過(guò)調(diào)用用戶鏈表類(UserLinkList)來(lái)實(shí)現(xiàn)的,當(dāng)用戶上線或下線情況發(fā)生變化時(shí),該類會(huì)對(duì)主類的界面進(jìn)行相