免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4556 | 回复: 2
打印 上一主题 下一主题

使用Python+xmpppy通过gtalk服务收发消息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-25 15:21 |只看该作者 |倒序浏览
使用Python+xmpppy通过gtalk服务收发消息
Du XiaoGang
    XMPP是一种以XML为基础的开放式即时通讯协议,是经由网际网络工程工作小组(IETF)通过的网际网络标准.XMPP的技术来自于Jabber,事实上它是Jabber的核心协议.

    GTalk是Google推出的IM(即时通信)工具,它使用的消息传输协议与XMPP兼容,XMPP也因为Google Talk而被广大网民所接触.

    因为XMPP协议具有的开放性,它能为互联网上两台不同主机间通信提供可能.特别是当两台主机都处于局域网内而无法直接通信时.举个例子,比如想要从家中的主机向单位的主机发送一条命令,这时只要单位的主机连接到XMPP网络并且在等待消息即可收到命令并处理.

    xmpppy是XMPP协议的一个开源Python实现,其项目主页在
http://xmpppy.sourceforge.net/
,它的基本用法很简单,下面是一个实例,实现一个基于XMPP的echo服务,运行该实例后,你可以从GTalk客户端向其发送数据并看到回复,当然发送数据和收到数据是相同的(echo服务).

#! /usr/bin/env python
# encoding=UTF-8
import xmpp
import time
# 消息回调函数
def messageCB(cnx, msg):
    # 显示消息发送者和内容
    print "Sender: " + str(msg.getFrom())
    print "Content: " + str(msg.getBody())
    # 将消息又返回给发送者
    cnx.send(xmpp.Message(str(msg.getFrom()), str(msg.getBody())))
if __name__ == '__main__':
    # 给实例的gtalk帐号和密码
    login = 'user***'
    pwd = 'pwd***'
    # 创建client对象
    cnx = xmpp.Client('gmail.com', debug=[])
    # 连接到google的服务器
    cnx.connect(server=('talk.google.com', 443))
    # 用户身份认证
    cnx.auth(login, pwd, 'UDPonNAT')
    # 告诉gtalk服务器用户已经上线
    cnx.sendInitPresence()
    # 设置消息回调函数
    cnx.RegisterHandler('message', messageCB)
    # 循环处理消息,如果网络断开则结束循环
    while True:
        if cnx.Process(1) == None:
            print 'Lost connection.'
            break
    # 无用,方便windows命令窗口调试
    while True:
        time.sleep(1)

    要运行这个例子需要两点:
    1,系统需要安装Python和xmpppy.
    2,要有两个gtalk帐号,并且这两个帐号要互相加为好友,可以用GTalk客户端做这件事情.

    点击获取
echo.py
代码.下图是在我的主机上执行抓图:



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10449/showart_1147690.html

论坛徽章:
0
2 [报告]
发表于 2009-04-06 18:35 |只看该作者
发送不了,提示如下

Could not load one of the supported DNS libraries (dnspython or pydns). SRV records will not be queried and you may need to set custom hostname/port for some servers to be accessible.

请问这是什么问题?

[ 本帖最后由 泛泛之辈 于 2009-4-6 18:39 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2012-08-27 14:20 |只看该作者
这两个帐号要互相加为好友,可以用GTalk客户端
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP