Http 寻找通过internet传输关键实时数据的好方法

Http 寻找通过internet传输关键实时数据的好方法,http,sockets,network-programming,msmq,rtp,Http,Sockets,Network Programming,Msmq,Rtp,我正在寻找一种通过internet传输数据的好方法,我在C++/windows环境下工作。数据是二进制的,即提取图像的压缩斑点。输入和要求如下: 每秒10个数据包时为6kB/数据包(每秒60KB) 可靠的数据传输 我是网络编程新手,到目前为止,我认为以下方法之一是合适的 插座 MSMQ(MS消息队列) 客户端在浏览器上运行(在浏览器上显示实时图像)。而服务器运行本机C++代码。请告诉我是否有其他方法可以达到同样的效果?我应该选择哪一个?为什么?您有什么具体原因不能在windows计算机上运行服务

我正在寻找一种通过internet传输数据的好方法,我在C++/windows环境下工作。数据是二进制的,即提取图像的压缩斑点。输入和要求如下:

  • 每秒10个数据包时为6kB/数据包(每秒60KB)
  • 可靠的数据传输
  • 我是网络编程新手,到目前为止,我认为以下方法之一是合适的

  • 插座
  • MSMQ(MS消息队列)

  • 客户端在浏览器上运行(在浏览器上显示实时图像)。而服务器运行本机C++代码。请告诉我是否有其他方法可以达到同样的效果?我应该选择哪一个?为什么?

    您有什么具体原因不能在windows计算机上运行服务器吗?60kb/秒,看起来像某种嵌入式设备

    根据我们的描述,您需要在浏览器上实时显示图像信息。您可以使用HTTP。但是它是无状态的,这意味着一旦信息被传输,你就失去了连接。客户端需要轮询C++/Windows计算机。如果您确信生成的信息是周期性的,那么可以使用这种方法。这需要一个服务器,所以只有在对我的第一个问题回答“是”时


    聊天协议。类似于在客户端上运行的Jabber客户端,以及在C++/Windows计算机上运行的Jabber服务器。聊天协议允许几乎实时的

    虽然这似乎有道理,但在这种情况下我不会使用MSMQ。您现在可能不会遇到问题,但MSMQ消息的大小是有限的,因此您最终可能会遇到问题

    我将在这个应用程序中使用TCP,TCP的构建考虑到了可靠性,您可以通过套接字简单地提供数据。您可能需要自己制定一个非常简单的协议,但它应该是最佳选择

    除非您使用的嵌入式设备能够完全理解MSMQ,否则使用MSMQ的最佳选择是使用代理,然后您仍然必须使用TCP,可能还有HTTP

    我在私人时间做家庭自动化,包括安全摄像头,我使用.net micro framework,即使它有MSMQ功能,我也不会使用它

    我建议您研究一下MJPEG(运动JPEG),它听起来和您想要做的完全一样


    如果服务器决定图像的发送速度,这就是它的外观,那么服务器推送式解决方案将是有意义的。现在大多数浏览器(甚至非浏览器)所适应的是

    WebSocket与大多数专有协议相比的主要优势在于,除了成为广泛采用的标准外,它们运行在HTTP之上,因此可以渗透(大多数)代理和防火墙等

    在服务器端,您可以潜在地集成,这使您能够轻松地实现WebSocket,并附带许多其他库。它是用C++编写的,通过C++和JavaScript扩展,No.js托管一个VM。js的主要特性是在每个级别上都是异步的,这使得这种编程风格成为默认的

    当然,在服务器端实现WebSocket还有其他方法,node.js可能比您需要的更多。我在Windows上实现了一个NoDE.js的C++扩展,用于为老浏览器做WebSoCube和非WebStutts传输,这对我来说是很好的。
    但这是文本数据。在您的二进制数据的情况下,socket.io不会这样做,所以您可以检查一下通过WebSocket执行二进制数据的方法。

    非常感谢您的回复。是的,我能够运行C++/Windows服务器。这不是问题,没错,客户端是嵌入式机器。生成的信息是周期性的,但我不应该错过任何数据包,因为我使用的是差分编码。我将对Jabber进行一些研究。这似乎是我正在寻找的,非常感谢您对WebSocket的建议。我想我应该这么做。是的,经过一些研究,我决定使用node.js是最好的方式。