用握手的方法,属于比较贪婪的方案,而且如果是单边的就不适用了,例如HTTP,小型的C/S这样做也可以,挺好用。不过若果要保证程序正常退出是不可能完成的任务,即使操作系统也无法保证自身的正常退出,比如停电了。所以建议你换一个思路,QQ也是如此,其中一个保证机制就是设置服务器在一个超时范围内收不到客户端的任何包,那么认为你已经不在线了,自然那边是退出了客户端,自动修改客户状态,然后再加上正常退出时同步修改服务端的状态等机制,那就万无一失了。NET里也有这样类似的租赁机制。这样可以避免发起几乎无意思的空链接造成服务端资源泄露。
过一段时间互相通讯一次,如果不通就说明对方已经关闭
那肯定要必须在间隔时间内去通讯,如果不通就已经关闭了