问题标签 [communication-protocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3915 浏览

asynchronous - 真实世界的跨平台去中心化异步点对点通信

我对网络编程的知识有限,所以,所有的评论都非常受欢迎。基本上我的问题归结为以下问题:

Q1。真的有去中心化异步跨平台点对点通信这样的东西吗?

让我自己解释一下。

  • 如果我们在具有实际 IP 地址的计算机上运行两个 http 服务器,那么显然答案是肯定的,假设其中一个为交互编写协议。

  • 更进一步,如果其中一个(或两者)位于路由器后面,那么通过端口转发仍然可以建立通信。但是,这里问题开始了,因为如果有人想在后台运行这样的服务器,比如在手机中,依赖这个服务器的应用程序在一个人在家时确实可以工作(我们不能真的期望请求端口转发无论我们去哪里)。

  • 但除此之外,

  • Q2。当有人不使用 wi-fi 时,手机是否会从电信公司获取实际的 IP 地址?

  • 如果这是真的,那么显然可以通过在智能手机上运行 http 服务器,以不使用 wi-fi 为代价进行跨平台异步点对点通信。(我知道这不方便,但肯定是可行的。)

最后,我能想到的两个(也许还有更多)相关问题是:

根据对 Skype 的回答,它说:如果被调用者之一或两者都没有公共 IP,则它们通过 UDP 或 TCP 将语音流量发送到另一个在线 Skype 节点。 因此,Skype 中似乎没有直接通信,因为在这种情况下,他们必须使用中间人。

关于 Viber,我找不到这个特定问题的全面答案。人们是通过 Viber 集中式服务器相互交谈,还是建立直接连接?当然,如果他们确实建立了直接连接,那么我真的很想知道他们是如何管理这样的事情的,因为手机可能有也可能没有物理地址。即使 Viber 未运行且我在路由器后面,如何将 Viber 消息从我的朋友路由到我的手机?

我想 Viber 的答案确实是推送通知,但据我所知,推送通知的所有变体都依赖于打开的连接,然后应用程序的服务器通过此类连接将通知发送给客户端。所以,这种方法给我们的感觉是它是异步的,但本质上它不是。我们在作弊,因为与服务器的连接不断打开,而且据我所知,应用程序服务器必须通过该服务器推送通知。示意图:

A > Central App Server > Central Server w/ open connection to my phone > me

因此,这似乎又是一种集中式方法。

老实说,我能想到的唯一一种既分散又异步的方法(在手机上也是如此)是在每个平台/设备上运行一个 http 服务器,但这是以不使用 Wi-Fi 和假设为代价的一家电信公司真的为每部手机分配了一个物理IP地址(我不知道是不是真的,你呢?)。

WASTE、暗网、F2F 等呢?它们是否提供了一些利益相关方之间更直接的异步通信的优势?是否存在使用此类通信方法的实际应用程序(也包括移动电话)。

真的,这不是我想要解决的实际问题,但我想知道最先进的技术是什么,以便我可以弄清楚如何从那里着手。因此,所有评论都非常受欢迎。如果您有最新技术的参考资料,我也想了解它们,但简短的描述也很好。

我提前感谢您所有的时间和精力。

0 投票
2 回答
895 浏览

c# - 通过网络在应用程序之间进行通信

在我们的项目中,我们有许多程序在计算机内部和内部网络上相互通信。为了解决这个问题,我们今天使用 COM/DCOM。然而,我们认为 DCOM 过于复杂。如何为每个版本的 Windows 配置安全设置更改。

因此,我们正在寻找一种协议,该协议能够使我们在不同 Windows 计算机上的不同程序之间进行通信,并且它的开销不如 DCOM。

这些程序是用 C++/MFC 和 C# 编写的

安全性并不那么重要,因为系统运行在与其他网络完全分离的小型本地网络上。

0 投票
2 回答
249 浏览

image - Transmission of images (image descriptors) over internet

I need to send images or image descriptors from a client (smartphone) to a server (processing machine). The server tries to recognize the images/features in a video stream and sends back the IDs of the detected ones + maybe some additional data. Normally the recognition process does not last more than several seconds (considering a big number of images to be recognized). Ideally the processing server responds within milliseconds.

The images to be detected are sent in the "setup phase" (no problem if there's a big delay) and then the sampled video frames, where the recognition process is performed on, are being sent with a specific frequency, let's say 5 frames/second. (of course the frequency is variable)

What is the best communication protocol for implementing this? The code is going to be written in C/C++ but I'm more interested in how to workflow (the concept) would look like rather than code implementation.

Is HTTP sufficient for this? How about RTSP or maybe something else? Please keep in mind that the data goes from a smartphone (where the internet connection is not exceptional) to a processing machine (server, fast internet connection).

Thank you!

Edit: Thanks for your answers. Actually I was looking for a comparison between the existing communication protocols that can implement my specific need. As I said, I'm not interested in the complexity of the code that would implement the "connection". I would have liked to see some advantages/disadvantages between them, relative to my use case. On the other hand, the server performing the recognition has to be compliant with the communication protocol (+API) implemented by the application running on the smartphone, nothing more. That means I don't care how the server does it's job as long as it is able to understand client requests and return an answer that can be understood by the application making the request.

Something that I forgot to mention (my bad) is that I'm interested in ALL the communication protocols that are providing support for implementing this use-case.

0 投票
1 回答
641 浏览

tcp - 客户端能否通过 TCP/IP 通信向服务器发送数据

为了正常建立连接,我们会从服务器向客户端发送数据,但是可以从客户端向服务器发送数据。

0 投票
1 回答
3046 浏览

mqtt - OPC UA数据包格式

由于 OPC UA 工作在 TCP/IP 之上,所以数据包格式与 TCP/IP 相同还是不同?我有兴趣研究 OPC UA 的数据包及其格式,并与 MQTT 数据包进行比较。如果有人有关于两者的信息,请分享。此外,OPC UA/MQTT 将开销添加到原始数据的数据包中。

0 投票
1 回答
114 浏览

embedded - 当有多个从站的数据正在更新(事件触发帧)时,主站应该发送什么标头?

如果发生 Lin 事件触发帧,我们想检查从机的数据 Rx。据我们了解,在 Autosar 的 Lin 堆栈集成中,我们有无条件帧的 Tx 和 Rx。在这里,主设备使用 ARTOP 工具根据为 TX 和 Rx 帧配置的 PID(受保护的标识符)发送一个标头。当主设备发送的标头与从设备 PID 匹配时,该从设备以数据响应。在事件触发帧中,主设备发送一个标头,并且多个从设备将响应该标头,只有当他们的数据已更新时。如果只有一个从机响应,那么它将发送其更新的数据,但如果有多个从机响应,则会发生冲突,主机将处理并解决冲突。

0 投票
1 回答
142 浏览

android - 两部安卓手机之间的数据传输

我想在 2 部 Andriod 手机之间尽可能远地传输数据(几个字节)。我不想使用 WiFi。通信必须直接在两个设备之间进行。如果我连接了 FM 发射器,是否可以通过 FM 发送和接收数据?有没有更好的办法?

0 投票
1 回答
621 浏览

python - ioctl errorno: 25 在使用 python-gpib 的 GPIB 通信中

我正在尝试使用 National Instruments 的 GPIB-USB-HS 适配器与 Tektronix 示波器 TDS 210 通信。我的系统是 Ubuntu 14.04.3,我在此链接中安装了 linux-gpib:Linux GPIB Driver package (source)和 python-gpib。我像这样重新配置了 /etc/gpib.conf:

lsmod 给我这个:

dmesg:

但是当尝试使用 ibtest 与示波器通信时,我收到此错误:

使用 Python:

是否有人已经有类似的问题或知道如何解决这个问题?

0 投票
0 回答
63 浏览

sockets - 没有网络适配器的 TCP 端口

我打算编写一些软件模块,它们都将在一台机器上运行,我希望它们通过 TCP 相互通信。

我使用的机器很可能没有物理网络适配器。如果没有物理网络适配器,与 localhost 的 TCP 连接是否能够正常工作?

我运行的操作系统是 Linux for Tegra。

谢谢。

0 投票
2 回答
37535 浏览

i2c - I2c 总线上的 NACK 和 ACK 响应

我最近的项目需要使用 i2c 通信,使用单个主设备和多个从设备。我知道,对于主机发送的每个数据字节(实际数据),从机以 Nack\Ack(1,0) 响应。我对如何解释 Nack 和 ACK 感到困惑。我搜索了网络,但我没有得到关于这个的清晰图片。我的理解是这样的。

ACK-我已经成功接收到数据。向我发送更多数据。NACK-我还没有收到数据。再次发送。这是这样的事情还是我错了。请澄清并提出正确的答案。

谢谢阿米特库马尔