原创 Gloox發送消息

Gloox發消息很簡單,通過前面的接消息的描述,當需要與遠端進行通話時,建立一個MessageSession會話,一旦你擁有這樣的一個會話對象了,就可以調用其中的send方法來向遠端發送消息了。那麼這個MessageSession如何獲得

原创 理解C++成員函數指針

        一直以來對C++成員函數指針沒有太注意, 以爲跟普通函數指針差不多,  使用起來才發現錯誤多多,  將成員函數指定當普通函數指針來使用了,  因此, 特意寫了個小例子來幫助理解, 具體代碼如下: class FuncPoi

原创 利用SMTP發送Mail詳解(二)

3. SMTP身份認證 SMTP身份認證方式有很多種, 每種認證方式驗證發送的信息都有點細微的差別, 這裏我主要介紹下LOGIN,PLAIN及NTLM三種簡單的認證方式, 附帶CRAM-MD5和DIGEST-MD5方式(驗證沒通過, 不

原创 XMPP協議內容

基本的jabber客戶端必須實現以下標準協議(XEP-0211)1、RFC3920 Core http://tools.ietf.org/html/rfc39202、RFC3921 Instant Messaging and Presen

原创 gloox連接至服務器端

在使用gloox之前,有必要先提一下XMPP協議這個東東。 XMPP協議是一個基於互聯網的即時通信標準協議。它採用XML技術,以文本的方式傳輸即時消息。支持動態自定義擴展應用。與傳統的網絡協議相比,如QQ等,XMPP協議並不是一個基於二進

原创 服務器/客戶端時間同步

最近因工作原因,需要客戶端計算機與FTP服務器時間上進行同步,上網蒐集了些時間同步的方法記錄下來, 以備不需之用!1.時間協議(TIME protocol)     時間協議(TIME protocol)是一個在RFC 868內定義的網

原创 gloox代碼分析3 - 註冊模塊

jabber協議中如何註冊一個用戶?首先要與服務器建立一個連接, 在完成TLS握手之後就可以進行註冊了,爲什麼不需要SASL握手呢?因爲SASL握手只針對已經註冊的用戶在登陸服務器的時候使用.(修改密碼和刪除用戶的時候需要SASL握手)下

原创 利用SMTP發送Mail詳解(三)

5). DIGEST-MD5認證方式 DIGEST-MD5認證也是Challenge/Response的方式, 與CRAM-MD5相比, 它的Challenge信息更多, 其Response計算方式也非常複雜, 我在測試時也是以認證失敗而

原创 內存分配函數總結

內存分區: 1)、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。 2)、堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。 3)、全

原创 gloox代碼分析4 - private xml storage

這部分的作用是客戶端可以存放任意格式的私有xml數據到服務器上,並且在想要查看的時候取回!1.協議 - XEP-0049 - http://xmpp.org/extensions/xep-0049.html2. jabber client

原创 利用SMTP發送Mail詳解(一)

在以前接觸的項目中,一直都是在做網站時用到了發送mail 的功能,在asp 和.net 中都有相關的發送mail 的類, 實現起來非常簡單。最近這段時間因工作需要在C++ 中使用發送mail 的功能,上網搜了一大堆資料,終於

原创 gloox代碼分析1 - connect模塊

主要分析gloox的connect模塊,涉及的文件:connectionbase.hconnectiondatahander.hconnectionhandler.hconnectiontcpbase.h (connectiontcpba

原创 gloox接收消息

通過前面的描述,當和服務器建立了連接之後,就可以和服務器進行通訊了,今天先說一下接收遠端發送來的文本消息的方式吧。 在接收消息之前,需要明確一件事情,就是一旦你登陸至服務器之後,隨時有可能有人人給你發來消息,所以應該考慮的是你需要做一個死

原创 XMPP客戶端庫資料

      最近需要做一個IM即時聊天工具項目, 上網蒐集了一些關於XMPP方面的資料, 將C/C++客戶端庫都列出來了, 由於E文水平不好, 可能有許不多正確地方, 見笑了!!!   gloox gloox是一個穩定功能完整的XMPP客

原创 在VC中如果實現GIF的播放?

void   CImageView::OnDraw(CDC*   pDC)     {             CImageDoc*   pDoc   =   GetDocument();             ASSERT_VALID