我目前正在开发一个服务器(使用Java),它必须经常(每10-30秒)向几个客户端(10-100)发送几个字节。起初,我想过使用UDP多播数据报(java.net.MulticastSocket),但我认为这不是一个好的解决方案,因为在大多数路由器上对多播的支持不好。
所以我想知道如果我通过单播将所有数据直接发送到主机,或者您是否知道更优雅/流量更少的话,这是不是一个好主意?
答案 0 :(得分:3)
使用JMS有许多优点,但大多数都使用TCP,所以你也可以。即使在低带宽网络上,每10-30秒到几百个客户端的几个字节也很小。
假设您每10秒向100个客户端发送一个100字节的消息,即每秒1000字节或8Kbits /秒。甚至3G网络也可以轻松支持这种带宽。即你可以用智能手机做到这一点。 ;)
最简单的方法可能是从每个客户端获得一个tcp连接,服务器根据需要发送更新消息。
答案 1 :(得分:2)
您是否考虑使用Active MQ等邮件队列?这些具有很好的特性,您可以将消息一次写入队列,并且您可以拥有尽可能多的读取队列。
答案 2 :(得分:0)
您还可以使用gossip-based应用程序级多播协议。例如,NeEM可以轻松扩展到100个目的地,同时提供类似于MulticastSocket的接口,并且仅使用TCP / IP,因此与不太理想的网络设置兼容。