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

Networking 通过UDP广播检索可用的客户端,networking,tcp,server,udp,Networking,Tcp,Server,Udp,我目前正在开发一个“基于节点”的系统,其中服务器将在专用网络上发送UDP广播(使用自定义协议),该广播将由多个支持指定协议的不同客户端接收。在请求之后,服务器将在一些客户端之间选择一个更稳定的TCP连接 请求客户端序列 服务器向网络上的每个设备/节点广播ip请求 所有支持该协议的可用客户端都将使用其到服务器的唯一IP进行应答 服务器通过请求连接消息在客户端中进行选择 服务器选择的客户端通过TCP连接到服务器以实现可靠连接 我的问题 我对TCP和UDP都有很好的了解,但我以前从未设计过这样的系统。

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

请求客户端序列
  • 服务器向网络上的每个设备/节点广播ip请求
  • 所有支持该协议的可用客户端都将使用其到服务器的唯一IP进行应答
  • 服务器通过请求连接消息在客户端中进行选择
  • 服务器选择的客户端通过TCP连接到服务器以实现可靠连接
  • 我的问题 我对TCP和UDP都有很好的了解,但我以前从未设计过这样的系统。你认为这个系统是以正确的方式构建的,还是有更“标准”的方式来做类似的事情?你的想法是什么

    谢谢

    ---编辑--- 添加了程序的图表


    有一个标准协议用于在网络上公布服务,您可能希望考虑:,基于定期UDP多播:

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

    在该协议中,客户端加入UDP多播组以发现本地网络服务,并在需要时启动与这些服务的连接。这是协议的预期用例,与您的用例有些不同

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


    从您发布的图表中:

    • 服务器是中介(设计模式),分布式系统的每个其他进程都必须知道其位置
    • 客户端需要与服务器连接/注册
    • 主客户端是一个控制应用程序
    服务器通过UDP多播播发自己是有意义的

    在线客户端将使用TCP启动或TCP连接丢失连接到服务器。如果客户机因任何原因终止TCP连接,并且服务器立即意识到这一点,除非客户机断电或其操作系统崩溃。如果没有数据从服务器传输到客户机,您可能希望为服务器启用频繁的TCP保持活动,以便尽快检测死机客户机。这同样适用于客户

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


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

    有一个标准协议用于在网络上公布服务,您可能需要考虑:,基于定期UDP多播:

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

    在该协议中,客户端加入UDP多播组以发现本地网络服务,并在需要时启动与这些服务的连接。这是协议的预期用例,与您的用例有些不同

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


    从您发布的图表中:

    • 服务器是中介(设计模式),分布式系统的每个其他进程都必须知道其位置
    • 客户端需要与服务器连接/注册
    • 主客户端是一个控制应用程序
    服务器通过UDP多播播发自己是有意义的

    在线客户端将使用TCP启动或TCP连接丢失连接到服务器。如果客户机因任何原因终止TCP连接,并且服务器立即意识到这一点,除非客户机断电或其操作系统崩溃。如果没有数据从服务器传输到客户机,您可能希望为服务器启用频繁的TCP保持活动,以便尽快检测死机客户机。这同样适用于客户

    服务器和客户端之间的所有通信都通过TCP进行。否则,您将需要通过UDP或use实现可靠的消息传递,这可能需要大量的工作。多播UDP应仅用于服务器发现