我想使用 libcurl 用 C++ 编写一个简单的 google talk 客户端。Google talk 使用 XMPP 作为通信协议(protocol),它在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'>"
我收到响应 302“文档已移动”
如果我尝试使用 telnet 客户端
telnet talk.google.com 5222
我可以获得有效的 XMPP 响应
另外,如果我尝试访问 chat.facebook.com:
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。
有人能指出我的错误吗?
最佳答案
“-d”选项将数据作为 HTTP POST 发送。 XMPP 基于原始套接字。因此,您必须使用一个选项来创建一个普通的持久套接字,例如 telnet(如果可用)。但我对curl不太熟悉。
关于通过 XMPP 与 talk.google.com curl ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13571324/