平时不咋搞socket 所以对这方面 不是很了解 只知道 单纯的发送数据而已
目前我的做法是
客户端起一个线程倒计时10秒 然后一个线程接受数据 如果在10秒内受到来自服务端的数据 那么重新倒计时 如果10秒到了 没有收到来自服务器的数据 那么就表示与服务器失去了连接 当然接受数据的同时每5秒向服务器发送一个数据过去
然后服务端
服务端每5秒循环的为在线的每一个客户端发送一个数据过去 不过发送前判断一下该客户端上一次发来的数据的时间与现在的时间差 超过10秒 表示客户端挂了 当然也有一个线程在接受数据 接收到一个客户端数据的时候 将该客户端的数据发来的时间重新标记
但是我咋总觉得 我的做法很二 然后我又YY了一下
如果像我这样做 对于单独的一个客服端来说到没啥问题 如果 服务端当前有N多 比如百万个客户端 那么也每个一段时间 循环的向每个客户端发送数据?发送前还要判断时间差?而且同时 还要不停的接受来自百万个客户端发来的数据?那得了啊?、、如果是udp还好 要是在某种不得已的情况下 要tcp去连接客户端 然后却又不巧的 所有客户端都意外断开 没有像服务器发送离开请求 那么服务器 连接的时候 不是还要超时等待?就算开一个线程来等待 那么 同一时刻 起百万个线程去超时等待?、、
YY不下去了、、、、好吧 我承认 我很菜 没接触过这方面的编程、、