我目前正试图弄清楚我写的DDS
应用程序。
我的作家和读者目前具有可靠性,因此如果读者错过了一条消息,作者将重新发布该消息。我也使用默认的多播,而不是使用uni-cast来发现发布者和订阅者。
根据多播协议,我只使用端口7000
和7001
需要打开。但是,当我使用wireshark进行分析时,我发现端口7010
和7011
(单播)端口也是打开的。
经过一番挖掘后,我遇到了这个link,似乎要为读者和作者使用可靠性,你需要启用单播,这就是为什么单播端口也是开放和使用的。< / p>
是否必须真正启用uni-cast才能可靠地传递消息,如果是这样,为什么需要这样做,以及为什么多播不能执行此功能?
答案 0 :(得分:2)
在这种情况下,发生的事情是大多数流量将通过MC传出。有时候,可靠性协议会发送一条消息,说明实际上&#34;我有序号N到M可用。&#34;
每个读者都会(并且在不同的实现中可以调整很多)用某些东西做回应(通过单播!)&#34; ok&#34;或者&#34;我没有得到x或z&#34;。
如果只有一个读者没有得到x,那么MC修复样本x是没有意义的,因为只有一个读者需要它。所以作者会将它单播给那个吱吱作响的读者。
简而言之,我可以花费另外10段来讨论配置选项和调整行为。
但是,是的,博士:预期的行为。