平时不咋搞socket 所以对这方面 不是很了解 只知道 单纯的发送数据而已
目前我的做法是
客户端起一个线程倒计时10秒 然后一个线程接受数据 如果在10秒内受到来自服务端的数据 那么重新倒计时 如果10秒到了 没有收到来自服务器的数据 那么就表示与服务器失去了连接 当然接受数据的同时每5秒向服务器发送一个数据过去
然后服务端
服务端每5秒循环的为在线的每一个客户端发送一个数据过去 不过发送前判断一下该客户端上一次发来的数据的时间与现在的时间差 超过10秒 表示客户端挂了 当然也有一个线程在接受数据 接收到一个客户端数据的时候 将该客户端的数据发来的时间重新标记
但是我咋总觉得 我的做法很二 然后我又YY了一下
如果像我这样做 对于单独的一个客服端来说到没啥问题 如果 服务端当前有N多 比如百万个客户端 那么也每个一段时间 循环的向每个客户端发送数据?发送前还要判断时间差?而且同时 还要不停的接受来自百万个客户端发来的数据?那得了啊?、、如果是udp还好 要是在某种不得已的情况下 要tcp去连接客户端 然后却又不巧的 所有客户端都意外断开 没有像服务器发送离开请求 那么服务器 连接的时候 不是还要超时等待?就算开一个线程来等待 那么 同一时刻 起百万个线程去超时等待?、、
YY不下去了、、、、好吧 我承认 我很菜 没接触过这方面的编程、、
目前我的做法是
客户端起一个线程倒计时10秒 然后一个线程接受数据 如果在10秒内受到来自服务端的数据 那么重新倒计时 如果10秒到了 没有收到来自服务器的数据 那么就表示与服务器失去了连接 当然接受数据的同时每5秒向服务器发送一个数据过去
然后服务端
服务端每5秒循环的为在线的每一个客户端发送一个数据过去 不过发送前判断一下该客户端上一次发来的数据的时间与现在的时间差 超过10秒 表示客户端挂了 当然也有一个线程在接受数据 接收到一个客户端数据的时候 将该客户端的数据发来的时间重新标记
但是我咋总觉得 我的做法很二 然后我又YY了一下
如果像我这样做 对于单独的一个客服端来说到没啥问题 如果 服务端当前有N多 比如百万个客户端 那么也每个一段时间 循环的向每个客户端发送数据?发送前还要判断时间差?而且同时 还要不停的接受来自百万个客户端发来的数据?那得了啊?、、如果是udp还好 要是在某种不得已的情况下 要tcp去连接客户端 然后却又不巧的 所有客户端都意外断开 没有像服务器发送离开请求 那么服务器 连接的时候 不是还要超时等待?就算开一个线程来等待 那么 同一时刻 起百万个线程去超时等待?、、
YY不下去了、、、、好吧 我承认 我很菜 没接触过这方面的编程、、
解决方案 »
- 如何设计这种winform控件
- 如何为一个动态添加的pictureBox加入鼠标事件
- 请问Windows自动重启的函数是什么?
- 为什么对表的 Find 操作会抛出 MissingPrimaryKeyException 异常
- 请教类似iweboffice或者NTKO的东西该如何去开发?
- vbb论坛的官方网址是多少
- 关于dropdownlist控件和asp:Calendar控件! c#
- .NET与数据库问题 在线等待啊!!!!!
- 恶心,c#编的程序在98下不能用
- 新手上路!帮帮忙啊!
- c# 如何webBrowser判断网页已经跳转,并提取内容!
- |ZYCWPF| 为什么RichTextBox导出后,我发现Margin好没有导出呢?谢谢
貌似 最近 socket 很流行 看到好多人都再问 关于socket的问题 、、
如果在某种条件下 服务端要和客户端用tcp的连接的情况下 而且又不巧的 一批客户端意外的断线了 那么tcp连接的时候 不是得超时等待?
http://bbs.csdn.net/topics/370133409
这里有篇blog详细讲心跳机制的,可以参考一下。