使用Python+xmpppy通过gtalk服务收发消息
2008-10-16 14:24
701 查看
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
代码.下图是在我的主机上执行抓图:
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window/nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window CTRL+Mouse wheel to zoom in/out" src="http://blogimg.chinaunix.net/blog/upfile2/080825145702.png" width=896 onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window/nCTRL+Mouse wheel to zoom in/out';}" border=0 resized="true">
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
代码.下图是在我的主机上执行抓图:
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window/nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window CTRL+Mouse wheel to zoom in/out" src="http://blogimg.chinaunix.net/blog/upfile2/080825145702.png" width=896 onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window/nCTRL+Mouse wheel to zoom in/out';}" border=0 resized="true">
相关文章推荐
- 使用Python+xmpppy通过gtalk服务收发消息
- Python+xmpppy通过gtalk服务收发消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- Python 中__init__.py的使用(通过包调用方法)
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 构建简单的 C++ 服务组件,第 2 部分: 通过服务组件体系结构使用 Python、Ruby 和 Web 服务
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 使用python发送gtalk消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 通过python和xmpp模拟用户发消息
- Android studio使用smack连接xmpp服务器收发消息
- 通过python代码理解rabbitmq消息收发原理
- Android studio使用smack连接xmpp服务器收发消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- Android studio使用smack连接xmpp服务器收发消息
- 错误:"无法从命名空间绑定的导入"错误消息出现,当您试图通过使用 Web 服务描述语言工具创建 XML Web 服务代理文件时
- ios 使用XMPPFramewok:收发消息