p2p即時(shí)聊天系統(tǒng)

p2p即時(shí)聊天系統(tǒng)

ID:30786634

大?。?80.40 KB

頁(yè)數(shù):19頁(yè)

時(shí)間:2019-01-03

p2p即時(shí)聊天系統(tǒng)_第1頁(yè)
p2p即時(shí)聊天系統(tǒng)_第2頁(yè)
p2p即時(shí)聊天系統(tǒng)_第3頁(yè)
p2p即時(shí)聊天系統(tǒng)_第4頁(yè)
p2p即時(shí)聊天系統(tǒng)_第5頁(yè)
資源描述:

《p2p即時(shí)聊天系統(tǒng)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、一、課程設(shè)計(jì)題目基于P2P的局域網(wǎng)即時(shí)通信系統(tǒng)二、實(shí)驗(yàn)環(huán)境及工具1?計(jì)算機(jī):PC機(jī),PC虛擬機(jī),2.操作系統(tǒng):Windows2000,WindowsXP3.程序設(shè)計(jì)語(yǔ)言:VC6.0三、設(shè)計(jì)要求1.實(shí)現(xiàn)一個(gè)圖形用戶界面局域網(wǎng)內(nèi)的消息系統(tǒng)。2.功能:建立一個(gè)局域網(wǎng)內(nèi)的簡(jiǎn)單的P2P消息系統(tǒng),程序既是服務(wù)器乂是客戶,服務(wù)器端口使用3333oa)用戶注冊(cè)及對(duì)等方列表的獲取:對(duì)等方A啟動(dòng)后,用戶設(shè)置自己的信息(用戶名,所在組);掃描網(wǎng)段屮在線的對(duì)等方(3333端口打開(kāi)),向所有在線對(duì)等方的服務(wù)端口發(fā)送消息,接收方接收

2、到消息后,把對(duì)等方A加入到自己的用戶列表中,并發(fā)應(yīng)答消息;對(duì)等方A把回應(yīng)消息的其它對(duì)等方加入用戶列表。雙方交換的消息格式自己根據(jù)需要定義,至少包括用戶名、IP地址。b)發(fā)送消息和文件:用戶在列表屮選擇用戶,與用戶建立TCP連接,發(fā)送文件或消息。3.用戶界面:界面上包括對(duì)等方列表;消息顯示列表;消息輸入框;文件傳輸進(jìn)程顯示及操作按鈕或菜單。四、設(shè)計(jì)內(nèi)容與步驟1.學(xué)習(xí)Socket和TCP的基木原理和通信機(jī)制;2.功能設(shè)計(jì)和界面設(shè)計(jì)3.服務(wù)器功能的設(shè)計(jì)和實(shí)現(xiàn)4?客戶功能的設(shè)計(jì)和實(shí)現(xiàn)5.課程設(shè)計(jì)任務(wù)說(shuō)明書五、方案

3、設(shè)計(jì)1.消息格式本系統(tǒng)采用的消息格式是,文件頭+消息內(nèi)容文件頭為T?9,消息格式分配如下:本機(jī)名:登陸,發(fā)送給所有在線對(duì)等方的服務(wù)端口'24本機(jī)名:對(duì)登陸消息的回饋34本機(jī)名:退出W+本機(jī)名:對(duì)話請(qǐng)求“51”或”52”:對(duì)話請(qǐng)求的冋應(yīng)(是否同意)8+本機(jī)名+”退出對(duì)話J退出對(duì)話7+對(duì)話內(nèi)容:對(duì)話8+文件名長(zhǎng)度+文件名+文件長(zhǎng)度(轉(zhuǎn)換成CString):請(qǐng)求傳送“91”同意傳輸“92”拒絕“93”磁盤已滿2.該軟件分別開(kāi)了3個(gè)監(jiān)聽(tīng)端口:3333、3334、3335。之所以分開(kāi)3個(gè)端口是因?yàn)楦鞣N傳送的不同,在

4、設(shè)計(jì)實(shí)驗(yàn)的過(guò)程中我發(fā)現(xiàn)對(duì)于登陸消息,退出消息,應(yīng)該用的socket是即用即斷,即比如我收到登陸消息,并發(fā)送冋饋消息后就斷開(kāi)連接,這樣就不用一個(gè)用戶同時(shí)連接很多用戶,如果用完不斷,就是全連接了。而文件傳輸應(yīng)該跟對(duì)話傳輸分開(kāi),因此應(yīng)該再開(kāi)一個(gè)端口。3.在線用戶的掃描:本軟件是通過(guò)掃描局域網(wǎng)內(nèi)的在線用戶(不一定打開(kāi)軟件),然后一一發(fā)送登陸信息,如果收到登陸信息就在列表上增加用戶并發(fā)送冋饋,如果收到回饋就在列表上增加用戶,如果收到退出消息就刪除用戶。4.文件傳輸原本打算使用多線程文件傳輸,及發(fā)送端開(kāi)多個(gè)線程同時(shí)讀

5、一個(gè)文件并發(fā)送,接收端在磁盤開(kāi)辟一個(gè)與接收文件大小一致的一個(gè)文件,然后接收端開(kāi)多個(gè)線程接收并各自負(fù)責(zé)寫進(jìn)特定文件位置,不過(guò)由于Socket匹配問(wèn)題,因此還是使用單線程傳輸比較簡(jiǎn)單一點(diǎn)。六、方案實(shí)現(xiàn)及主要程序1.工程中的類(1).本軟件屮分別有三個(gè)CAsyncSocket的派生類,分別是CCtrlSocket,CTalkSocket,CFileSocketa)CCtrlSocket:用于接收及發(fā)送控制信息,包括文件頭為1'(登陸);2(冋饋);3(退岀);4(對(duì)話請(qǐng)求);’5,(對(duì)話請(qǐng)求的回應(yīng))的消息,對(duì)應(yīng)

6、監(jiān)聽(tīng)端口是CTRLPORT——3333b)CTalkSocket:用于接收及發(fā)送對(duì)話信息,及部分文件控制信息。包括文件頭為8(退出對(duì)話);7(對(duì)話);8(請(qǐng)求傳送);9(傳送回應(yīng))的消息,對(duì)應(yīng)監(jiān)聽(tīng)端口是TALKPORT——3334c)CFileSocket:用于發(fā)送及接收文件,對(duì)應(yīng)監(jiān)聽(tīng)端口是FILEPORT——3335其它類如CPathDialog,CFileDlg與本設(shè)計(jì)的主要部分無(wú)緊要聯(lián)系,故不一一說(shuō)明了2.類的具體實(shí)現(xiàn)(1).CCtrlSocket類:主要部分有FD.READ及FD_CONNECT觸

7、發(fā)的事件,OnConnect在建立連接后發(fā)送出相應(yīng)的消息,而OnReceive在有消息到來(lái)的情況下處理消息voidCCtrlSocket::OnReceive(intnErrorCode){//TODO:Addyourspecializedcodehereand/orcallthebaseclasscharq[50];chart;unsignedintj;CStringtempaddr;CStringCtemp;UINTtempport;this?>Receive(q,strlen(q)+l,O);t=q

8、[°];forfl=0;jm_pMainWnd;pDlg->UpdateData(true);switch(t)//對(duì)控制信息的判斷{caseT:〃登陸pDlg->mJistonline.InsertltemfO.q);this^GetP

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。