实时消息

时间:2012-10-25 15:48:02

标签: .net sockets compact-framework

我公司有100多辆车。每辆车都有Windows Mobile设备,通过3G连接到互联网。

我的任务是编写一个应用程序,以便能够实时与这些车辆进行通信。服务器端和客户端。

这是我需要注意的清单。

  • 最小带宽使用。 (套接字?TCP或UDP ???)
  • 在移动中连接正在丢失。消息应该成功传递。

是否有适合这些要求的协议或服务器应用程序?

此致

气压

2 个答案:

答案 0 :(得分:3)

只需使用HTTP,HTTP标头的开销就不会破坏带宽库。

客户端只需轮询服务器以获取最新消息。如果最新消息与客户端记录的最后一条消息的ID差异大于1,则客户端可以直接请求丢失的特定消息ID(可能从丢弃的客户端连接中丢失等)。通常的HTTP处理程序(ashx)或Web服务(asmx)就是你真正需要的。

答案 1 :(得分:0)

对于这种类型的通信场景,套接字通信将是最佳选择。为什么?

1)。它使用原始字节发生。

2)。可以选择进行连接通信和无连接通信

3)。 .NET有一个丰富的API来实现套接字通信。

4)。如果与Rx和/或TPL(异步等待)一起使用,则可以更好地处理它。

最小带宽使用:TCP将为实际消息添加更多的头字节,然后UDP作为TCP连接(种类)通信套接字类型,并且还具有内部校验和。 UDP将是通过3G节省一些带宽的最佳选择。

对于连接和保证确认消息传递: 我会说,选择完全取决于您或您的公司采取何种方法继续推进。

TCP的优点:由于它是连接通信,一旦您失去连接,两端都可以了解断开连接,并且可以再次进行连接,并且在消息传递方面更可靠。

UDP的优点:它的发送和遗忘协议因此无法保证内置的任何可靠性或连接性,但由于在您使用UDP的情况下发送的字节成本高,将是很好的选择并使用某种消息协议来实现端到端通信 - 通过响应机制请求/确认。因此,可以手动完成接收和发送的确认连接和消息。