作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有需要全部连接到单个服务器进程的客户端。我正在为客户端使用 UDP 发现来查找服务器。我让客户端和服务器交换IP地址和端口号,以便在发现完成后建立TCP/IP连接。这样,数据包的大小就可以保持很小。我看到这可以使用 UDP 以两种方式之一完成:
最佳答案
我过去几次使用过选项#2。它适用于简单的网络拓扑。当 UDP 数据报超过以太网 MTU 导致大量碎片时,我们确实看到了一些吞吐量问题。我们看到的最大问题是,由于许多路由器被配置为阻止多播流量,因此多播发现在较大的拓扑中会失效。
issue that Greg alluded to在设计协议(protocol)套件时要考虑非常重要。一旦您超越了简单的网络拓扑,您就必须为 address translation 找到解决方案。 , IP spoofing ,以及与从发现层到通信层的切换相关的大量其他问题。它们中的大多数都与您的服务器如何标识自己以及确保标识是客户端可以使用的东西有关。
如果我可以再做一次(我们说过多少次这个短语),我会寻找符合要求的基于标准的发现机制并开始解决其他协议(protocol)套件问题。您真正想做的最后一件事是提出一个非常好的发现方案,该方案在您部署它后的一周内因某些不可预见的网络拓扑而中断。谷歌 service discovery
为起始名单。我个人倾向于DNS-SD但还有很多其他选择。
关于sockets - UDP 服务器发现 - 客户端应该发送多播以查找服务器还是服务器应该发送常规信标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1204396/
我是一名优秀的程序员,十分优秀!