牛人編寫聊天工具的心得

牛人編寫聊天工具的心得

ID:25472045

大?。?6.50 KB

頁數(shù):10頁

時(shí)間:2018-11-20

牛人編寫聊天工具的心得 _第1頁
牛人編寫聊天工具的心得 _第2頁
牛人編寫聊天工具的心得 _第3頁
牛人編寫聊天工具的心得 _第4頁
牛人編寫聊天工具的心得 _第5頁
資源描述:

《牛人編寫聊天工具的心得 》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、牛人編寫聊天工具的心得[牛人編寫聊天工具的心得]做一個(gè)聊天軟件,首先要懂得網(wǎng)絡(luò)通信的基礎(chǔ)TCPIP,UDP之類的協(xié)議,還有socket編程,牛人編寫聊天工具的心得。實(shí)現(xiàn)兩臺(tái)電腦之間的通信是非常簡單的,對于UDP是無連接的傳輸層協(xié)議,不像TCP那樣需要accept和connect什么的需要確保連接。但是UDP又是不可靠的,但是相對來說,我覺得對于即時(shí)聊天軟件來說,使用udp還是足夠的。于是我采用了UDP協(xié)議來貫穿我的軟件。當(dāng)然一般的不加修飾的Socket,只能實(shí)現(xiàn)同類網(wǎng)絡(luò)地址下的通信,對于一個(gè)不同內(nèi)網(wǎng)的計(jì)算機(jī),將無法進(jìn)行通信,這樣也大大局限了我們軟件的使用范圍,所以

2、我采用了UDP下的NAT穿透技術(shù)來突破這一障礙,具體理論我們參照這篇文章。先談?wù)務(wù)w的思想吧,這個(gè)即時(shí)聊天軟件是以C/S構(gòu)架的,服務(wù)器主要負(fù)責(zé)客戶的信息轉(zhuǎn)發(fā),當(dāng)然只是客戶本身的IP、各種端口(消息監(jiān)聽,文件監(jiān)聽)、用戶名之類的屬性,他不直接參與客戶之間的通訊,只有當(dāng)客戶之間需要nat穿透的時(shí)候才會(huì)通過服務(wù)器通知需要通信的一方向另一方發(fā)送打洞請求,另外還處理客戶之間的登錄和下線事件的廣播,所以服務(wù)器的壓力會(huì)比較小。  牛人編寫聊天工具的心得[牛人編寫聊天工具的心得]做一個(gè)聊天軟件,首先要懂得網(wǎng)絡(luò)通信的基礎(chǔ)TCPIP,UDP之類的協(xié)議,還有socket編程,牛人編寫聊

3、天工具的心得。實(shí)現(xiàn)兩臺(tái)電腦之間的通信是非常簡單的,對于UDP是無連接的傳輸層協(xié)議,不像TCP那樣需要accept和connect什么的需要確保連接。但是UDP又是不可靠的,但是相對來說,我覺得對于即時(shí)聊天軟件來說,使用udp還是足夠的。于是我采用了UDP協(xié)議來貫穿我的軟件。當(dāng)然一般的不加修飾的Socket,只能實(shí)現(xiàn)同類網(wǎng)絡(luò)地址下的通信,對于一個(gè)不同內(nèi)網(wǎng)的計(jì)算機(jī),將無法進(jìn)行通信,這樣也大大局限了我們軟件的使用范圍,所以我采用了UDP下的NAT穿透技術(shù)來突破這一障礙,具體理論我們參照這篇文章。先談?wù)務(wù)w的思想吧,這個(gè)即時(shí)聊天軟件是以C/S構(gòu)架的,服務(wù)器主要負(fù)責(zé)客戶的信息

4、轉(zhuǎn)發(fā),當(dāng)然只是客戶本身的IP、各種端口(消息監(jiān)聽,文件監(jiān)聽)、用戶名之類的屬性,他不直接參與客戶之間的通訊,只有當(dāng)客戶之間需要nat穿透的時(shí)候才會(huì)通過服務(wù)器通知需要通信的一方向另一方發(fā)送打洞請求,另外還處理客戶之間的登錄和下線事件的廣播,所以服務(wù)器的壓力會(huì)比較小。至于客戶端,我采用了傳統(tǒng)的聊天軟件的慣用方式,一個(gè)主對話框,顯示好友信息。出于減小難度,我只采用一個(gè)樹控件來控制這些好友信息,而沒有采用tab類型的控件,即使采用也是要花費(fèi)一定的功夫去重寫這些控件類,才能滿足我們的要求。然后通過雙擊樹控件的子項(xiàng)來彈出聊天對話框,說到這里我不得不說一下C++的確是高處C一大籌

5、,(封裝、繼承、多態(tài))這是在是太帥了。創(chuàng)建這些聊天對話框時(shí),將傳入對應(yīng)的客戶IP、對話框指針、用戶名(號碼)等以用來正確識(shí)別。主程序運(yùn)行就掛起一個(gè)消息監(jiān)聽線程,來循環(huán)監(jiān)聽從不同客戶發(fā)來的消息,然后進(jìn)行不同的處理,所以使用了較多的宏,吧來自不同客戶的消息傳給不同的本地聊天對話框處理,所以剛才說的在創(chuàng)建聊天對話框的時(shí)候的參數(shù)就非常重要了,處理不好可能會(huì)出現(xiàn)差錯(cuò)。諸多細(xì)節(jié)在這里還是比較難以細(xì)說。雖然采用了UDP傳輸協(xié)議,但是我通過消息回執(zhí)來確保消息發(fā)送成功,這個(gè)回執(zhí)將決定是否進(jìn)行打洞處理。而在文件傳輸功能上的實(shí)現(xiàn),采用了TCP傳輸層協(xié)議(我也不知道為什么自己就選擇了這個(gè),

6、估計(jì)是但是第一感覺需要accept和connect),我是在主程序運(yùn)行時(shí)就掛起一個(gè)文件監(jiān)聽線程,當(dāng)然這個(gè)監(jiān)聽端口是在程序運(yùn)行是,沒有登錄服務(wù)器之前就首先動(dòng)態(tài)獲取的,我只是循環(huán)地查找沒有被占用的端口并綁定套接字,心得體會(huì)《牛人編寫聊天工具的心得》(..)。在有客戶發(fā)來文件傳送請求時(shí),就創(chuàng)建一個(gè)文件接收和發(fā)送線程。感覺以上這些還是比較容易實(shí)現(xiàn)的。當(dāng)然采用類的思想才會(huì)比較清晰,否則會(huì)比較亂。再講講其他一些小小細(xì)節(jié),比如那個(gè)菜單的實(shí)現(xiàn),如果采用對話框的默認(rèn)菜單,我們都會(huì)覺得比較惡心,的確有點(diǎn)難看,所以我把對話框的菜單欄卻掉了,然后添加了ON__NCHITTEST()消息,實(shí)

7、現(xiàn)無菜單的客戶區(qū)拖動(dòng),然后重寫個(gè)Button類來實(shí)現(xiàn)png圖片的裝飾,實(shí)現(xiàn)鼠標(biāo)經(jīng)過、懸停和按下的狀態(tài)(就像qq的最小化和關(guān)閉按鈕那樣的效果),當(dāng)然,我使用的是VC6開發(fā)的,不能直接使用GDI+,所以配置了一下才行(具體方法自己網(wǎng)上一查就知道了)。然后那個(gè)對話框的主背景,也是通過把一張png圖片繪上去的,當(dāng)然還要解決一些閃爍的問題,可以采用雙緩沖來解決。在做界面的時(shí)候,我深感自己缺乏藝術(shù)細(xì)胞,ps技術(shù)實(shí)在太爛,做的按鈕圖片比較難看,顏色搭配和漸變效果實(shí)在難以控制。而文件實(shí)現(xiàn)拖拽發(fā)送也比較簡單,增加個(gè)ON__DROPFILES()消息函數(shù),對話框拓展屬性勾上Acce

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

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

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