简单来说,就是服务端带上自己的IP地址和port,注册服务;
客户端发现服务后,获取服务端的IP地址和port,后面就可以自由实现进行TCP、Http、websocket等通信了。
实际测试中发现:
1. 客户端启动,服务未启动,即使之前注册过服务,也无法被发现。但是,当服务启动后,客户端可以马上发现最新的服务。
2. 服务一直处于开启状态,反复关闭、运行客户端,始终能够发现该服务。
3.客户端一直处于开启状态,每运行一次服务端就更改服务的instance_name,客户端也能始终发现最新的服务。
4. 客户端一直处于开启状态,反复关闭、运行同一个服务(不修改instance_name,只修改ip,其他参数无变化),客户端对于同名的服务只能发现一次,无法发现只修改ip的服务,更不会去获取ip和port
结论:
1.只要服务一直开启,不论客户端何时开启,都能够发现服务;
2. 对于同名服务(instance_name),客户端运行期间只会发现一次。如果关闭客户端再打开,可以再次发现该同名服务。
3. 服务名有长度限制。
基础网络知识(单播,广播,组播(多播))以及 Zeroconf的理论,链接如下: