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