我目前正在开发一个“基于节点的”系统,其中服务器将在专用网络上发送一个UDP广播(带有自定义协议),该广播将由几个支持指定协议的不同客户端接收。在请求之后,服务器将在一些客户端之间选择一个更稳定的TCP连接。
请求客户端顺序
我的问题
我对TCP和UDP都有很好的了解,但我以前从未设计过这样的系统。你认为这个系统是以正确的方式构建的,还是有一种更“标准”的方式来做类似的事情?你的想法是什么?
谢谢!
--编辑--
添加了程序的图表。

发布于 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只应用于服务器发现,而不是需要可靠传递的双向通信。
主客户端还连接到服务器,可能在另一个端口上进行控制。主客户端可以发现所有可用的服务器(如果有多个服务器),并允许用户选择连接到哪个服务器。
https://stackoverflow.com/questions/61162815
复制相似问题