P2p开源库tcp/udp组播支持
p2p open source library tcp/udp multicast support
我的电脑上运行着一个特定的应用程序。同一个应用程序可以在局域网的多台计算机上运行,也可以在世界上不同的地方运行。我想在他们之间进行交流。所以我想要一个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
祝你好运:-)
- 编译时未启用intel oneApi CUDA支持
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用CMake检测支持的C++标准
- 从udp接收帧对于人脸识别来说太慢
- 为什么istream不支持右值提取
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 扩展光电二极管探测器以支持多个传感器
- MSVC是否支持C++11样式的属性而不是__declspec
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- boost::asio UDP 广播客户端仅接收"fast"数据包
- (Winsock) UDP 接收工作正常,但同一套接字的发送失败
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 哪个C++规范开始支持 std::vector
- 将数据发送到多个客户端 UDP 时不支持地址族
- P2p开源库tcp/udp组播支持