2016-05-12 39 views
-1

我有以下情况:使用UDP和网络套接字的数据丢失

本地PC以50.000位/秒通过蓝牙接收数据样本。数据通过UDP发送到某个服务器。服务器依次通过网页/ JavaScript和Web套接字将数据分发到处理数据的连接浏览器。最终,来自浏览器的结果通过UDP传递回本地PC。

到目前为止,我正在试验严格的本地设置,即一切运行在一台拥有四核CPU的机器上。我已经在node.js和golang中编写了服务器代码。在这两种情况下都存在重大的数据丢失,即,即使只有一个Web套接字客户端被连接,也不是每个通过UDP发送的样本都被服务器成功接收。

哪里是造成损失的瓶颈?是否所有的东西都在本地机器上运行?难道网络套接字带宽太小?使用WebRTC会更好吗?还是完全是另一回事?

+0

假设没有网络问题,丢失信息意味着你没有足够快地阅读它们。没有任何代码,我们无法真正给你一个答案。 – JimB

+0

“我会比WebRTC更好吗?”我们不能告诉你,如果你不告诉你的应用程序的目的是什么,用户将如何彼此连接(根本是p2p选项?)以及你期望的用户 - 基地将会是。 – Kevin

+1

我只能说,UDP不保证数据包到达。现在看起来,没有什么不寻常的,网络上还有很多其他流量?这很容易在UDP连接中造成更多的数据包丢失。 – Kevin

回答

2

很难说你的案例中的瓶颈究竟在哪里。

但是UDP是一种不可靠的协议(可以丢失数据),而WebSocket(使用TCP)则不是。这意味着消息可能会被读取或写入UDP数据的进程丢失。例如,可能发生这样的数据包丢失,因为这些应用通常太慢以至于读取数据或者因为套接字缓冲区太小而无法处理由进程调度或类似引起的读取/写入速度的波动。