4

我想使用 libcurl 用 C++ 编写一个简单的 google talk 客户端。Google talk 使用 XMPP 作为通信协议,它在talk.google.com:5222 上侦听。首先,我尝试使用 curl 从命令行访问 google talk。如果我尝试

curl talk.google.com:5222 -d "<stream:stream to='gmail.com' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' version='1.0'>"

如果我尝试使用 telnet 客户端,我会收到响应 302“文档已移动”

telnet talk.google.com 5222

如果我尝试访问 chat.facebook.com,我可以获得有效的 XMPP 响应:

curl chat.facebook.com:5222 -d "<stream:stream to='chat.facebook.com'  xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' version='1.0'>"

我再次收到有效的 XMPP 响应,唯一的问题是 talk.google.com。

有人能指出我的错误吗?

4

1 回答 1

2

“-d”选项将数据作为 HTTP POST 发送。XMPP 基于原始套接字。因此,您必须使用一个选项来创建一个普通的持久套接字,例如 telnet(如果可用)。但我对curl不太熟悉。

于 2012-11-27T15:04:50.247 回答