我首先是参考了https://pynng.readthedocs.io/en/latest/core.html#pynng.Pipe.send

这个网址,是专门将pynng这个库的,下面的是基于同步的库的

具体的结构图:

#我写的一个代码,大家随便改改随便试试

# from pynng import Pair1
''''
address = 'tcp://127.0.0.1:12343'
with Pair1(listen=address, polyamorous=True) as s0, \Pair1(dial=address, polyamorous=True) as s1, \Pair1(dial=address, polyamorous=True) as s2:s1.send(b'hello from s1')      ####@@@@@s1 发出hello from s1s2.send(b'hello from s2')     #@ s2 发出hello from  s2msg1 = s0.recv_msg()                       #@s0去接收信息msg2 = s0.recv_msg()                      #@ s0  再去接收print(msg1.bytes)  # prints b'hello from s1'  #@先得到s1print(msg2.bytes)  # prints b'hello from s2'  #@ 再得到s2得发来得信息msg1.pipe.send(b'hey s1')                     # @从接收得管道中发送msg2.pipe.send(b'hey s2')                     #@ 从该接收得管道中发送msgprint(s2.recv())  # prints b'hey s2'          #@  看到底发送接收到了没有print(s1.recv())  # prints b'hey s1'          #@ 看s1 是否接收到了
''''''
下面一部分,来进行我对上面pair1 的一个修改
'''
from pynng import Pair1address = 'tcp://127.0.0.1:12343'
with Pair1(listen=address, polyamorous=True) as s0, \Pair1(dial=address, polyamorous=True) as s1, \Pair1(dial=address, polyamorous=True) as s2:s2.send(b'hello from s2')  # @ s2 发出hello from  s2s1.send(b'hello from s1')      ####@@@@@s1 发出hello from s1msg1 = s0.recv_msg()                       #@s0去接收信息msg2 = s0.recv_msg()                      #@ s0  再去接收# s1.send(b'for test')# msg4 = s2.recv_msg()# msg4.pipe.send(b's1,s2connect to each other')# print(type(msg2))   #这个是pnng的msg的类型,这个类型存在pipe 管道的说法可以到之后,也就表示他们之间建立了连接咯# msg3=s0.recv()   # 而这个recv 接收到的就是不同的字节流的类型的数据# print(msg3)# print(type(msg3))print(msg1.bytes)  # prints b'hello from s1'  #@先得到s1print(msg2.bytes)  # prints b'hello from s2'  #@ 再得到s2得发来得信息# msg1.pipe.send(b'hey s1')                     # @从接收得管道中发送#@ 从该接收得管道中发送msg# msg2.pipe.send(b'hey s2')# msg3=s1.recv_msg()# msg4=s2.recv_msg()"""s1.send(b's1 again')s1.send(b's1 again again')s1.send(b's1 again again again')s2.send(b's2 again')s2.send(b's2 again again ')# s2.send(b's2 again again again')print(s0.recv())print(s0.recv())print(s0.recv())print(s0.recv())# print(s0.recv())# print(s0.recv())# print(s0.recv())"""s0.send(b'i am s0')s0.send(b'i am s0')s0.send(b'i am s0')print(s1.recv())# print(s2.recv())# print(msg3.bytes)# print(msg4.bytes)## msg1.pipe.send(b'let us talk ok?')# msg3.pipe.send(b'we can talk')# msg2.pipe.send(b'')# print(s0.recv())# print(s1.recv())# print(s2.recv())  # prints b'hey s2'          #@  看到底发送接收到了没有# print(s1.recv())  # prints b'hey s1'          #@ 看s1 是否接收到了# print(s1.recv())# s0.send(b'send to who')# print(s2.recv())# s1.send(b'testagain')# print(s0.recv())# s0.send(b'hello1')# print(s1.recv())# s0.send(b'hello2')# print(s2.recv())
###我们测试了一下得到了结论
'''
s1 发出
s2 发出
msg1 s0接收
msg2 s0接收
实际上,这样也就建立了s1 与 s0  s2 与s0 之间的连接了
情况1:但是是基于msg1是s0接受了来自s1 msg2是s0接收了来自s2 这种实例的对象的哦  实际上,我们就可以认为这是个管道 这个时候建立了管道s1 s2反正就一直发送我们这个时候就用s0 一直接收试试 s1.send(b's1 again')s1.send(b's1 again again')s1.send(b's1 again again again')s2.send(b's2 again')s2.send(b's2 again again ')# s2.send(b's2 again again again')print(s0.recv())print(s0.recv())print(s0.recv())print(s0.recv())
测试结果:交替接收b's1 again'b's1 again again'b's2 again'b's2 again again '如果我们再建立msg3是s1接收来自s0的实际的对象  msg4是s2接收来自s0的实例 的情况,这个时候,我们就可以分别使用msg3 和 msg1 对应的实际的pipe 互相发送和接收详细了,我认为这个应当是实际上建立了两个管道的情况,不会造成影响'''

大家也可以自己去尝试各种的修改,我当前的认知就是:

每一个节点通过一个pipe建立一个连接,这个连接实际上是一个双向的呢?

建立的msg的对象可以通过msg.pipe.send()进行向绑定的s1 发送,而s1的发送也就直接使用:我们看一下执行的结果

通过上面的两个图我们可以看到接收的情况并没有什么具体的顺序

第二部分:s0 直接使用send进行发送,只有s1 能够接收到并不知道为什么

看第二份的测试结果:我们的s0 和s1 s2  通过msg1 msg2 这个实例对象链接了起来

nanomsg----pair1 的介绍相关推荐

  1. Bowtie使用介绍

    Bowtie使用介绍 转载自:http://bioinformation.cn/?p=316 Bowtie(下载)是一个超级快速的,较为节省内存的短序列拼接至模板基因组的工具.它在拼接35碱基长度的序 ...

  2. NanoMsg框架|Android Studio编译NanoMsg源码

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2184字,预计阅读6分钟 导语 前面的章节已经把NanoMsg的简介,及C#相关的NNanoMsg使用Demo已经介绍完成了, ...

  3. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  4. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  5. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

  6. pytorch学习笔记(九):PyTorch结构介绍

    PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...

  7. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

  8. Pytest - 使用介绍

    1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...

  9. 遗传算法的简单介绍以及模式定理的简单证明

    遗传算法   遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...

  10. k8s核心组件详细介绍教程(配超详细实例演示)

    本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...

最新文章

  1. 使用 OpenSSL 替代 Telnet
  2. Ajax学习-Ajax简介
  3. c++ socket 连接超时_Web性能优化之-HTTP长连接
  4. Koadic的安装和使用---http c2远控工具
  5. tensorflow 利用索引获取tensor特定元素
  6. springboot获取静态图片路径_SpringBoot中的全局异常处理你确定你真的知道吗?
  7. Yarn管理界面中各个参数和yarn-site.xml中参数的对应关系
  8. 希尔排序(分而治之)
  9. mysql批量导入txt数据_MySQL批量导入Excel、txt数据
  10. Locality-sensitive hashing
  11. python手动安装依赖包
  12. npcap关闭_Npcap.资料
  13. 2017 年,最热开源静态网站生成器 TOP 20 揭晓!
  14. ssm毕设项目基于框架的动漫网站设计与实现q6dcx(java+VUE+Mybatis+Maven+Mysql+sprnig)
  15. 事实劳动关系的解除依据什么法律规定
  16. 服务器CPU占用过高处理方案
  17. 计算机视觉方向简介 | 机器视觉检测技术
  18. 酒精测试仪方案开发PCBA
  19. python使用hyper下载https2.0网站的excel
  20. 安科瑞企业能源管理系统在水泥企业中的设计与应用-Susie 周

热门文章

  1. php任意文件引入漏洞,PHP:ThinkCMFX任意文件包含漏洞
  2. 免费版本oss对象存储。如何部署一个免费的minio对象存储空间?
  3. 管理员权限弹窗只有否没有是
  4. 手机屏幕投影到投影仪_投影机与大屏幕电视:您应该购买哪一个?
  5. python 微信机器人,微信自动回复
  6. 数据库 高性能服务器,高性能数据库服务器配置
  7. 解决Mixed Content: The page at https://xxx was loaded over HTTPS
  8. APP拉新活动方案怎么做才能吸引用户
  9. win10 鼠标指针
  10. Linux中的动态监控