此安装主要参考了spade官网。

https://spade-mas.readthedocs.io/en/latest/usage.html

1 XMPP安装

1.1 XMPP账号注册及安装:

首先登录https://xmpp.org/getting-started/ 下载相应的客户端注册XMPP账号

客户端选择如下:

  • Conversations (Android)
  • Swift.IM (OS X, Windows & Linux)
  • Gajim (Windows & Linux)
  • Monal IM (macOS & iOS)
  • Converse.js (Browser)

移动端注册百度搜索Conversations下载该APP,ios系统可在应用商店搜索Monal进行安装

1.2 XMPP服务器安装:

登录https://xmpp.org/software/servers.html

XMPP提供了多种服务器,选择适合自己系统的服务器即可。

Project Name

Platforms

Apache Vysper

Linux / Windows

AstraChat

Linux / macOS / Solaris / Windows

ejabberd

Linux / macOS / Windows

IoT Broker

Windows

Isode M-Link

Linux / Windows

jackal

Linux / macOS

Metronome IM

Linux

MongooseIM

Linux / macOS

Openfire

Linux / macOS / Solaris / Windows

Prosody IM

BSD / Linux / macOS

Tigase XMPP Server

Linux / macOS / Solaris / Windows

Wokkel

Linux / macOS / Solaris

此处我选的是Prosody IM  。Prosody IM 服务器安装命令为:

sudo apt-get install prosody

此处输入y,再按回车键。

2 spade安装

2.1 Spade 代理安装:

在pycharm里安装spade包:

File->setting->project interpreter

点击右上角的“+”,然后输入spade搜索spade包,选中spade后点击“install package”安装。

同理,安装asyncio包,方法略。

2.2 测试:

用pycharm创建dummyagent.py一个文档

from spade import agent

class DummyAgent(agent.Agent):

async def setup(self):

print("Hello World! I'm agent {}".format(str(self.jid)))

#注意:修改成刚才注册时的账号和密码

dummy = DummyAgent("your_jid@your_xmpp_server", "your_password")dummy.start()

dummy.stop()

2.3 简单的例子:

例子1:An agent with a behaviour

新建AnAgentWithABehaviour.py文档

import timeimport asynciofrom spade.agent import Agentfrom spade.behaviour import CyclicBehaviour

class DummyAgent(Agent):

class MyBehav(CyclicBehaviour):

async def on_start(self):

print("Starting behaviour . . .")

self.counter = 0

async def run(self):

print("Counter: {}".format(self.counter))

self.counter += 1

await asyncio.sleep(1)

async def setup(self):

print("Agent starting . . .")

b = self.MyBehav()

self.add_behaviour(b)

if __name__ == "__main__":

#注意:修改成刚才注册时的账号和密码

dummy = DummyAgent("your_jid@your_xmpp_server", "your_password")

dummy.start()

print("Wait until user interrupts with ctrl+C")

while True:

try:

time.sleep(1)

except KeyboardInterrupt:

break

dummy.stop()

例子2:kill a behaviour

新建killABehaviour.py:

import timeimport asynciofrom spade.agent import Agentfrom spade.behaviour import CyclicBehaviour

class DummyAgent(Agent):

class MyBehav(CyclicBehaviour):

async def on_start(self):

print("Starting behaviour . . .")

self.counter = 0

async def run(self):

print("Counter: {}".format(self.counter))

self.counter += 1

if self.counter > 3:

self.kill(exit_code=10)

return

await asyncio.sleep(1)

async def on_end(self):

print("Behaviour finished with exit code {}.".format(self.exit_code))

async def setup(self):

print("Agent starting . . .")

self.my_behav = self.MyBehav()

self.add_behaviour(self.my_behav)

if __name__ == "__main__":

dummy = DummyAgent("your_jid@your_xmpp_server", "your_password")

future = dummy.start()

future.result()  # Wait until the start method is finished

# wait until user interrupts with ctrl+C

while not dummy.my_behav.is_killed():

try:

time.sleep(1)

except KeyboardInterrupt:

break

dummy.stop()

例子3:关闭spade

新建文档FinishingSPADE.py

from spade import quit_spade

from spade import agent

class DummyAgent(agent.Agent):

async def setup(self):

print("Hello World! I'm agent {}".format(str(self.jid)))

dummy = DummyAgent("your_jid@your_xmpp_server", "your_password")dummy.start()

dummy.stop()

quit_spade()

例4:在一个代理中创建另一个代理

新建文档CreatingAgentFromWithinAnotherAgent.py

from spade import agent

import Agentfrom spade.behaviour import OneShotBehaviour

class CreateBehav(OneShotBehaviour):

async def run(self):

agent2 = Agent("agent2@fake_server", "fake_password")

# This start is inside an async def, so it must be awaited

await agent2.start(auto_register=False)

agent1 = Agent("agent1@fake_server", "fake_password")agent1.add_behaviour(CreateBehav())# This start is in a synchronous piece of code, so it must NOT be awaitedagent1.start(auto_register=False)

unbuntu16.4 64位安装spade+XMPP教程相关推荐

  1. matlab 工具 安装包下载地址,安装 | MATLAB2018a (64位) 安装教程及安装包下载链接...

    安装 | MATLAB2018a (64位) 安装教程及安装包下载链接 发布时间:2019-04-04 11:39, 浏览次数:1323 , 标签: MATLAB 博主github:https://g ...

  2. mysql下载64位 太平洋,Win10 64位安装MySQL5.6.35的详细教程

    1. 下载MySQL Community Server 5.6.35 下载地址http://dev.mysql.com/downloads/mysql/5.6.html 2. 解压MySQL压缩包 将 ...

  3. 命令win7 64安装mysql_Win7 64位安装MySQL及配置使用教程

    MySQL是比较好用的个人数据库软件,相比其他数据库软件要易用得多,但然了有不少用户对MySQL的安装.配置和使用可能不是很熟悉,特别是Win7 64位有不少用户老是安装失败,下面一起来看看Win7 ...

  4. mysql安装教程win7系统64位_Win7 64位安装MySQL及配置使用教程

    MySQL是比较好用的个人数据库软件,相比其他数据库软件要易用得多,但然了有不少用户对MySQL的安装.配置和使用可能不是很熟悉,特别是Win7 64位有不少用户老是安装失败,下面一起来看看Win7 ...

  5. win10安装mysql5.6.35_Win10 64位安装MySQL5.6.35的详细教程

    1. 下载MySQL Community Server 5.6.35 下载地址http://dev.mysql.com/downloads/mysql/5.6.html 2. 解压MySQL压缩包 将 ...

  6. java aapt linux_Centos 64位安装aapt、jdk、tomcat的详细教程

    1.安装jdk #查看系统自带的jdk [root@localhost ~]# rpm -qa | grep jdk java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x ...

  7. mysql 5.6.24 64位_CentOS 6.4 64位 安装 mysql 5.6.24

    下载安装包 由于官网访问及版本选择下载不太方便,使用 suho 的源进行下载 下载如下三个安装包: MySQL-server-5.6.24-1.el6.x86_64.rpm MySQL-client- ...

  8. Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!!

    Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!! ...前言 Step1: 更新系统 Step2:安装ns2需要的几个包 Step3:下载安装包 ...

  9. centos6.4 yum装php,CentOS6.x/6.5/6.4/6.3/6.2/7.x 64位安装php5.2(使用YUM自动安装)

    搜索热词 默认情况下,CentOS6 64 bit 已经早已不支持PHP5.2.x ,但是某些PHP程序还需要zend optimizer支持,怎么办呢?目前大部分的yum repos 都已经不支持直 ...

  10. openstack安装系列问题:window7 64位安装的virtualBox 只能选择32位的系统安装不能选择64位的系统安装...

    个人原创,转载请注明作者,出处,否则依法追究法律责任 2017-10-03-12:22:22 现象:window7 64位安装的virtualBox 只能选择32位的系统安装不能选择64位的系统安装 ...

最新文章

  1. TCP性能和发送接收Buffer的关系
  2. 打印swift 变量的类型
  3. 减少模型方差的方法借鉴
  4. mysql通过binlog日志来恢复数据
  5. wireshark抓包分析tcp连接与断开
  6. 15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理
  7. 数学建模学习笔记(四)——拟合算法
  8. 机器学习第二回——多变量线性回归
  9. din字体是开源字体吗_12款免费开源英文字体
  10. 既然选择了远方,便只顾风雨兼程……
  11. 【推荐】数据科学中的非数学特征提取方法
  12. 系统分析与设计方法---需求分析与软件设计
  13. 面试 — 海康威视(Android客户端开发)
  14. java修图sdk_手把手教你,如何用手机修图软件做出逼格超高的照片!
  15. 实验五:Telemetry静态订阅实验
  16. 史上最全的Java进阶书籍推荐
  17. 想知道未来孩子长相?Python人脸融合告诉你
  18. 【2022天梯赛】L1-8 静静的推荐 L2-1 插松枝 L2-2 老板的作息表
  19. python统计一组数据中的概率_Python实现概率分布
  20. FLOJET NEMP50/7泵

热门文章

  1. 初学C语言对于结构体变量名的一些想当然
  2. gephi和python_python+nlp+Gephi 分析电视剧【人民的名义】
  3. excel表格打印每页都有表头_教你一招Excel打印技巧:每页有表头标题,阅读起来是真方便...
  4. 前后端分离 Spring Boot + Vue 开发网易云、QQ音乐(附源码)!
  5. W/View: requestLayout() improperly called by androidapp:id/toolbar_title} during second layout pass:
  6. 12月组队学习——JoyfulPandas第二章思维导图
  7. 你吃的外卖,半年前就做好了
  8. construct the binary tree.
  9. Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificat
  10. 特征多项式法(characteristic polynomial )求特征值(结合lanczos和householder)(python,数值积分)