如何利用jabber协议与gtalk服务器通讯 - 建立会话

3970阅读 1评论2010-06-28 laigq
分类:C/C++

如何利用jabber协议与gtalk服务器通讯 - 建立会话
 
客户端与gtalk server建立会话的过程如下(默认中间没有错误发生):

1. ( C->S ) 连接到服务器, 发送'hello'信息.


2. ( S->C ) 服务器回应'hello'信息



3. ( S->C ) 服务器要求TLS, SASL



    X-GOOGLE-TOKEN



4. ( C->S ) 开始TLS


5. ( S->C ) 服务器允许继续TLS


6. ( C->S ) TLS握手
客户端向服务器发起TLS握手请求, 如果握手成功, 执行#7 (可以使用openssl实现TLS的握手功能)

7. ( C->S ) TLS握手结束后, 发送新的'hello'消息


8. ( S->C ) 服务器回应'hello'消息



9. ( S->C ) 服务器要求SASL


    PLAIN
    X-GOOGLE-TOKEN



10. ( C->S ) 客户端执行SASL

AHlzb25nLmxlZUBnbWFpbC5jb20AeXNvbmdAMTk4NA==


auth的cdata的格式 '\0'+username+'\0'+password 的base64编码, username和password必须是经过认证的.
例如:
'\0' + + '\0' + 123456 -> 经过base64编码处理后变为cdata

11. ( S->C ) SASL成功


12. ( C->S ) 客户端发送新的'hello'消息


13. ( S->C ) 服务器回应'hello'消息



14. ( S->C ) 服务器要求绑定资源和建立一个会话





15. ( C->S ) 客户端绑定申请一个资源


16. ( S->C ) 服务器返回绑定资源的结果


    ysong.lee@gmail.com/BC20B630



17. ( C->S ) 客户端申请建立会话




18. ( S->C ) 服务器返回建立会话成功



到此, Client和Gtalk server的一个会话已经建立, 可以根据jabber协议进行其它操作. 请求联系人列表, 发消息等.
 
 
上一篇:glib GMainLoop GMainContext GSource
下一篇:基于ikssemel 的gtalk的简单client

文章评论