P2p开源库tcp/udp组播支持

p2p open source library tcp/udp multicast support

本文关键字:支持 udp 开源 tcp P2p      更新时间:2023-10-16

我的电脑上运行着一个特定的应用程序。同一个应用程序可以在局域网的多台计算机上运行,也可以在世界上不同的地方运行。我想在他们之间进行交流。所以我想要一个p2p系统。但是我总是知道哪些计算机(特定的IP地址)将是对等的。我只是希望同龄人有加入和离开的功能。最重要的目标是沟通速度和所需时间。我认为在对等体之间简单的UDP多播(如果有类似的存在)将是最快的解决方案。我不想重传信息,即使丢失。我应该使用现有的p2p库,如libjingle等。或者只是从零开始创建一些基本框架,因为我的需求非常基本?

我认为你错过了UDP的要点。从某种意义上说,这并没有节省时间,因为信息到达目的地的速度更快,这只是你在发布信息,而不在乎它是否安全到达了另一边。在广域网-它可能不会到达另一边。跨网络的UDP是有问题的,因为它可以被任何路由器在带宽紧张的路上丢弃——没有保证它的传输。

我不建议在你控制的拓扑结构之外使用UDP。

至于P2P与定向套接字-问题是你需要移动的是什么。您是否需要在所有节点之间进行双向/多向通信,或者您正在与来自所有节点的单个服务器通信?

你提到了多播——这意味着你有一些集中的数据源来传输信息,其他的都听——在这种情况下,P2P没有好处,多播作为UDP协议,可能不能很好地跨多个网络工作。但是您可以使用TCP连接到每个节点,自己使用"多播",而不是通过IGMP。如果你担心发送阻塞,你可以(也应该)使用线程和非阻塞套接字,当然你可以使用QoS设置"请求"路由器加速你的套接字通过。

您可以使用zeromq来支持所有网络通信:zeromq是一个简单的库封装TCP和UDP用于高层通信。

对于P2P,您可以使用不同的模式0mq:

  • 模式PGM/EPGM用于发现LAN上的P2P成员(它使用组播)
  • 模式REQ/REP向一个成员提问
  • 模式PULL/PUSH在网络上复制一个资源
  • mode发布/订阅以向所有请求者传输文件

警告,zeromq很难在windows上安装…

对于HMI,使用绿鞋?

我认为你应该成功使用多播。不幸的是,我不知道任何图书馆,

但是如果你必须从头开始

看看这个:http://www.tldp.org/HOWTO/Multicast-HOWTO.html

祝你好运:-)