zjqzxc
2016-11-07 17:51:59 +08:00
锐捷没用过,以前学校用的深澜估计机制上跟这个差不多
深澜的验证思路是:每 2 分钟左右向服务器发送一个内容为 uuid 的 UDP 包作为心跳包,因为 UDP 并不保证送达,大约 20~30 分钟连续没有接到这个 UDP 包时才认为客户端下线。
所以,如果不手动下线而是直接关客户端的话,需要等待一段时间才能下线。
这个也不能算是 bug ,网络流量大的时候 udp 包丢的一塌糊涂的时候这个机制还是很有用的。而且这东西也不是太重要的包,深澜在设计上可能认为没必要用 tcp 来传输或者是深澜为了减小认证服务器的开销,毕竟大几千上万的客户端在 2 分钟内都和服务器进行一次 tcp 通讯还是挺大的开销。
另外并不认为负责心跳包的是一个独立的进程,更倾向于认为只是一个线程。这么简单的事儿再开个进程开销太大了。
实验方法:开机并等待启动项都启动后记下进程数,开启认证客户端后再看看进程数,强杀主进程后再看看进程数