首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过UDP广播检索可用客户端

通过UDP广播检索可用客户端
EN

Stack Overflow用户
提问于 2020-04-11 19:48:40
回答 1查看 769关注 0票数 0

我目前正在开发一个“基于节点的”系统,其中服务器将在专用网络上发送一个UDP广播(带有自定义协议),该广播将由几个支持指定协议的不同客户端接收。在请求之后,服务器将在一些客户端之间选择一个更稳定的TCP连接。

请求客户端顺序

  1. 服务器向网络上的每个设备/节点广播request-for-ip消息。
  2. 所有支持该协议的可用客户端都将使用其对服务器的唯一IP进行应答。
  3. 服务器通过request-for-connection消息在客户端中进行选择。
  4. 由服务器选择的客户端通过TCP连接到服务器以获得可靠的连接。

我的问题

我对TCP和UDP都有很好的了解,但我以前从未设计过这样的系统。你认为这个系统是以正确的方式构建的,还是有一种更“标准”的方式来做类似的事情?你的想法是什么?

谢谢!

--编辑--

添加了程序的图表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-11 22:21:07

有一个标准协议在网络上为服务做广告,您可能会考虑:简单服务发现协议,基于定期的UDP多播:

简单服务发现协议(SSDP)是一种基于Internet协议的网络协议,用于网络服务和存在信息的发布和发现。它无需借助基于服务器的配置机制,如动态主机配置协议(,DHCP)或域名系统( Domain System,DNS),也不需要对网络主机进行特殊的静态配置。SSDP是通用即插即用(UPnP)发现协议的基础,适用于住宅或小型办公环境。

在此协议中,客户端加入该UDP组播组,以发现本地网络服务并启动与它们的连接(如果他们愿意的话)。这基本上是协议的预期用例,这与您的用例有些不同。

IP/UDP组播的一个好处是,如果主机上没有进程加入该组播组,则可以在网络适配器中丢弃多播数据包。另一种是IP/UDP组播可以跨网络路由。

从您发布的图表中:

  • 服务器是中介(设计模式),它的位置必须为分布式系统的每个其他进程所知道。
  • 客户端需要与服务器连接/注册。
  • 您的主客户机是一个控制应用程序。

服务器在UDP多播上做广告是有意义的。

联机客户端将使用TCP开始时或TCP连接丢失时连接到服务器。如果客户端因任何原因中断TCP连接而终止,并且服务器立即意识到这一点,除非客户端被关闭或其操作系统崩溃。如果没有从服务器向客户端传输数据,您可能希望启用频繁的TCP保持生命,以便服务器能够尽快检测已死亡的客户端。客户也是如此。

服务器和客户端之间的所有通信都是通过TCP进行的。否则,您将需要在UDP上实现可靠的消息传递,或者使用PGM,这可能需要大量的工作。多播UDP只应用于服务器发现,而不是需要可靠传递的双向通信。

主客户端还连接到服务器,可能在另一个端口上进行控制。主客户端可以发现所有可用的服务器(如果有多个服务器),并允许用户选择连接到哪个服务器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61162815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档