日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C/S+P2P网络模型(一)--聊天

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/S+P2P网络模型(一)--聊天 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址:http://blog.csdn.net/whoami021/article/details/21577415

從今天開始我們來(lái)實(shí)現(xiàn)一個(gè)C/S+P2P網(wǎng)絡(luò)模型,主要功能包括:聊天和傳輸文件。

聊天分群聊和私聊,雖然不是真的像QQ那樣有個(gè)QQ群,但是這樣類比容易理解,在后面我們會(huì)仔細(xì)說(shuō)明。

前面我寫過(guò)一篇文章講過(guò)組播,我們就用組播來(lái)實(shí)現(xiàn)p2p網(wǎng)絡(luò)模型。首先而且是最關(guān)鍵的一點(diǎn)是:每一個(gè)程序?qū)嵗紝?duì)應(yīng)一個(gè)peer結(jié)點(diǎn)。接下來(lái)我們先來(lái)解釋整個(gè)程序代碼框架,再分聊天和傳輸文件詳細(xì)說(shuō)明。

我們先看整個(gè)程序框架。

整個(gè)程序框架主要包括兩個(gè)模塊和一些實(shí)體類。

網(wǎng)絡(luò)模塊:實(shí)現(xiàn)兩個(gè)網(wǎng)絡(luò)模型,一個(gè)是C/S,另一個(gè)是P2P。

消息模塊:網(wǎng)絡(luò)消息所使用的消息類。

實(shí)體類:包括結(jié)點(diǎn)類和管理類等。

下面我們看聊天怎么實(shí)現(xiàn)。

1.要實(shí)現(xiàn)聊天,首先用戶要登錄。登錄主要用到C/S模型,我們使用一個(gè)服務(wù)器,用戶登錄時(shí)將用戶信息發(fā)送給服務(wù)器,服務(wù)器驗(yàn)證用戶信息并給用戶回發(fā)確認(rèn)消息,同時(shí)記錄每一個(gè)登錄的用戶,在用戶發(fā)出獲取當(dāng)前在線用戶列表的請(qǐng)求時(shí)返回該列表。

2.聊天分群聊和私聊。聊天需要用到P2P模型,不需要跟服務(wù)器打交道,直接將聊天消息發(fā)往各個(gè)用戶,當(dāng)然在獲取當(dāng)前在線用戶列表的時(shí)候還是要請(qǐng)求服務(wù)器的。

? ? ①默認(rèn)情況下是群聊,我們可以采用組播的方式實(shí)現(xiàn)。

? ? ②私聊要經(jīng)過(guò)下面幾個(gè)步驟:

? ? ? ? ? i.?獲取在線用戶列表。往服務(wù)器發(fā)送請(qǐng)求,由服務(wù)器將列表信息返回。

? ? ? ? ? ii.選中一個(gè)用戶,將接收方加入消息頭后進(jìn)行組播。在這里我使用名字唯一來(lái)標(biāo)識(shí),所以可以根據(jù)名字來(lái)唯一確定用戶。

? ? ? ? ? iii.?關(guān)鍵在這里,在接收組播消息后,首先解析消息類型,假設(shè)是PrivateMessage,如果發(fā)現(xiàn)消息中的接收方是自己就接收處理,否則就拋棄。

為了盡量減少代碼量,好讓大家容易理解,我沒(méi)有使用界面。

由于代碼文件比較多,需要的可以在這里下載。

上面只是實(shí)現(xiàn)了聊天功能,下一篇文章將會(huì)實(shí)現(xiàn)文件傳輸功能。

總結(jié)

以上是生活随笔為你收集整理的C/S+P2P网络模型(一)--聊天的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。