內(nèi)部聊天和svn消息實時推送(登錄端)

學習C++和QT剛剛兩個月出頭,所以剛聽到要做一個類似飛秋攒盈,并且可以推送SVN消息的客戶端有些擔心蓬豁。但是前輩給了很多幫助见坑,在設(shè)計的思路,用什么方法完成功能段多,到具體的協(xié)議解析時的類型轉(zhuǎn)換首量,都給了很多幫助,所以暫時把登陸端和SVN消息的解析做了出來,下面就說下這次的收獲吧加缘。

PS:可能有些地方我說的有問題鸭叙,希望了解的朋友可以提出來。

1.做到登陸和注冊消息的時候拣宏,因為要向服務(wù)器發(fā)消息沈贝,而qt通過套接字(QTcpSocket)中轉(zhuǎn),需要將消息發(fā)送到套接字勋乾。后面發(fā)送文本消息的時候也需要這樣做宋下,所以抽象了一個類專門處理向套接字發(fā)消息和從服務(wù)器收消息。這樣分層結(jié)構(gòu)使得修改代碼更簡潔辑莫,代碼重用性也更高学歧。

2.在使用信號與槽的時候,最好在聲明槽函數(shù)的同時就把信號與槽綁定起來摆昧,不然在運行程序的時候會發(fā)現(xiàn)槽函數(shù)沒有運行撩满。

3.在寫一個函數(shù)的定義,其中有很多判斷語句的時候绅你,最好一層一層的寫伺帘,每一個判斷語句的括號一定要記得成對使用,我寫的時候沒有注意到忌锯,最后一個判斷少了一個括號伪嫁,報了莫名其妙的錯誤。首先偶垮,這個函數(shù)接著的下一個函數(shù)報錯“該函數(shù)不能重復(fù)聲明”张咳,其次是后面會有一些變量會報錯為“未定義標識符”。

4.登陸界面有個注冊按鈕和groupbox用信號與槽連接似舵。想實現(xiàn)的功能是:最開始打開登陸界面這個groupbox不顯示脚猾,在點擊按鈕后,這個groupbox會顯示出來砚哗。

要實現(xiàn)這個功能龙助,在構(gòu)造函數(shù)的時候用hide()將其隱藏,再寫一個槽函數(shù)蛛芥,用判斷語句isHidden()和show()來實現(xiàn)提鸟。

5.在解析協(xié)議的時候,我們規(guī)定了一個結(jié)構(gòu)體類型的協(xié)議頭

enum ReceiverType

{

TO_SOMEONE?=?1,

BROADCAST,

};

enum ContentType

{

REGISTER?=?1,

ACK_RESULT,

LOGIN,

TEXT,

SVN_LOG,

};

Typedef struct tagMessageHeader

{

unsigned int messageLen;

unsigned char sender?[64];

ReceiverType?receiverType;

unsigned char receiver?[64];

ContentType?contentType;

}?MessageHeader;

或不同情況下在其后的內(nèi)存空間存放unsigned?char[64]或unsigned?char?*類型的內(nèi)容仅淑。

這里有兩點:

一是根據(jù)我們的要求称勋,unsigned?char?*和unsigned?char[64]在這里表示著這個變量所占的內(nèi)存空間,而前者代表不定空間大小涯竟,后者固定占64字節(jié)的空間赡鲜。這個與正常的語法不同空厌,遇到這種情況時要理解其含義。

二是為了解析協(xié)議蝗蛙,需要將每段不同類型的變量分別解析蝇庭,而整個協(xié)議是存放在一個連續(xù)的內(nèi)存空間中。所以要用一個指針來控制具體解析協(xié)議的哪一部分捡硅。這里需要注意的是要計算每一部分的長度哮内,然后利用長度控制指針的偏移量使其指向下一部分。

6.發(fā)送和解析協(xié)議的時候我用到了一些類型轉(zhuǎn)換的函數(shù)壮韭,這里簡單介紹一下

data():將QByteArray轉(zhuǎn)換成char*

toLocal8Bit()將QString轉(zhuǎn)化成QByteArray

還有就是需要一些強制類型轉(zhuǎn)換來使得函數(shù)的參數(shù)匹配北发。

還有一些學習到的東西可能沒有完全列出來,我會在之后繼續(xù)更新喷屋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琳拨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子屯曹,更是在濱河造成了極大的恐慌狱庇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恶耽,死亡現(xiàn)場離奇詭異密任,居然都是意外死亡,警方通過查閱死者的電腦和手機偷俭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門浪讳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涌萤,你說我怎么就攤上這事淹遵。” “怎么了负溪?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵透揣,是天一觀的道長。 經(jīng)常有香客問我川抡,道長辐真,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任猖腕,我火速辦了婚禮拆祈,結(jié)果婚禮上恨闪,老公的妹妹穿的比我還像新娘倘感。我一直安慰自己,他們只是感情好咙咽,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布老玛。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜡豹。 梳的紋絲不亂的頭發(fā)上麸粮,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音镜廉,去河邊找鬼弄诲。 笑死,一個胖子當著我的面吹牛娇唯,可吹牛的內(nèi)容都是我干的齐遵。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼塔插,長吁一口氣:“原來是場噩夢啊……” “哼梗摇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起想许,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤伶授,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后流纹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糜烹,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年捧颅,在試婚紗的時候發(fā)現(xiàn)自己被綠了景图。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡碉哑,死狀恐怖挚币,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扣典,我是刑警寧澤妆毕,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站贮尖,受9級特大地震影響笛粘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜湿硝,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一薪前、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧关斜,春花似錦示括、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳍侣。三九已至,卻和暖如春吼拥,著一層夾襖步出監(jiān)牢的瞬間倚聚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工凿可, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惑折,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓枯跑,卻偏偏與公主長得像唬复,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子全肮,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容