1——
在CS模式的应用系统中,SERVER端如何检测到CLIENT已经断开?比如CLIENT的应用关闭了、网络断开了等等2——
在CS模式中,CLIENT可能被动的接收SERVER的消息,比如QQ的广播消息,也就是说,SERVER在可能的情况下,需要向每个存在的连接发送一个广播数据,这个时候,CLIENT如何检测到有数据可以接收?
在CS模式的应用系统中,SERVER端如何检测到CLIENT已经断开?比如CLIENT的应用关闭了、网络断开了等等2——
在CS模式中,CLIENT可能被动的接收SERVER的消息,比如QQ的广播消息,也就是说,SERVER在可能的情况下,需要向每个存在的连接发送一个广播数据,这个时候,CLIENT如何检测到有数据可以接收?
让c自己来向s要消息
(2)QQ应该不仅仅是个客户端,它同时也开端口监听服务的。登陆过程中,它是个客户端,登陆成功后,它会告诉服务器自己监听的IP和端口。而腾讯的服务器会把这个地址和端口告诉你的每一个好友,以后你和好友的通信就不必经过腾讯的服务器了,否则腾讯的服务器未必能受得了那么大的通信压力。所以,QQ通信的各方实际上是互为服务器和客户端。
这个问题想到了,感觉这样总怪怪的,但可以作为不是办法的办法。2——
这个问题是基于这样的想法提出的:
在CS系统中,各CLIENT都会更新数据,当某个CLIENT更新了某个关键的数据的时候,希望其它的所有CLIENT都能同步获得这个数据,避免其它的CS又进行更新或者能使用到更新的数据。如果采取CLIENT定时向SERVER请求虽然能解决,但对网络是否会造成带宽浪费?
(2)可以建立连接,然后客户端等待服务器的通知消息啊。指定具体一点的通信协议,用不同的标记区分各种不同的通信包就是了。比如Upload包,Update包
我们可以接受到好友以前发送的消息,这就说明存在服务器中转。
我只是想说明:QQ不仅仅是个客户端。:)
s检测c有否断线可以用TCPlistener,但s发数据到c就知如何是好了!
既然要让c每隔一段时间要去连s,还会找不到办法吗?其实要深入研究,应该还有其他很多方法可以做到的