Chinaunix首页 | 论坛 | 博客
  • 博客访问: 649798
  • 博文数量: 109
  • 博客积分: 6081
  • 博客等级: 准将
  • 技术积分: 1318
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 10:28
文章分类
文章存档

2011年(8)

2010年(39)

2009年(62)

分类: C/C++

2010-06-28 22:00:02

如何利用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协议进行其它操作. 请求联系人列表, 发消息等.
 
 
阅读(3814) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

zhouguangyou0072011-08-15 14:32:59

very good!