免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: dwlnet
打印 上一主题 下一主题

请教TCP下检测客户端存活性的方法~ [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-04-21 13:50 |只看该作者
原帖由 yang_crystal 于 2008-4-21 11:46 发表
对于b,如果客户端在私网下你该怎么去连接啊,


录音服务器的运行环境是在局域网下,那还存在私网的问题吗?

论坛徽章:
0
12 [报告]
发表于 2008-04-21 13:52 |只看该作者
我做过类似的东西,和你的出奇的像,不过都是自己的做法,没有问过别人好不好,也没参考过别的资料
仅供参考

要考虑的东西有一些
首先,局域网这几个可以去掉吗?最好是别假设局域网,当然除非这样做能带来很多好处, 还有其实非常重要的,有必要吗假设是在局域网中吗?
其次,客户多吗?估计你的客户不多,不过多不多都只会影响到你的实现机制而已

还有一些,做的越简单越好,呵呵
我把我的代码抄出来,见笑了

while(1)  {
    等待数据产生
         
    delete_error_cli(); 删除无效用户的数据结构,比如连接断了,或者写数据超时等

                fd_set readfds;
                fd_set writefds;
                int n;

                g_select(&readfds,&writefds,&n,&tv);//我的客户也就那么几个十几个,数据也不多,select足够,


                n = select(n, &readfds, &writefds, NULL,  &tv);

                if (n > 0) {
                        /* unlikely */
                        if (FD_ISSET(listenfd_desk, &readfds)) { 有新客户,接受新客户连接
                                n--;
                                accept_cli();
                        }

                        DeskCli *cli;
for (cli = first_deskcli; n && cli; cli = cli->next) {
                                if (is_new_cli(cli)) {
                                        if (FD_ISSET(cli->fd, &readfds)) {
                                                n--;
                                                read_data(cli);
                                                set_cli(cli);
                                        }
                                } else if (FD_ISSET(cli->fd, &writefds)) {
                                        n--;
                                        send_alertlog(cli);
                                }
                        }

论坛徽章:
0
13 [报告]
发表于 2008-04-21 14:15 |只看该作者
其实我也是不怎么懂网络编程的这些规则
所以我考虑的时候,一般就是一个原则, 在满足需求和一些扩展性的情况下力求简单
比如我的应用只有那么几个用户,我实在没有必要考虑断开连接这样的方法,因为我不知道为什么要断开连接

论坛徽章:
0
14 [报告]
发表于 2008-04-21 14:38 |只看该作者
原帖由 dwlnet 于 2008-4-21 13:48 发表


那是采取(a)的方式吗?


(a)当然可以,不过你要打算做成产品的话,要考虑的方面要多些.
对于你设计的模型,除了先进性外,还要考虑实现的复杂度,以后升级的难度,还有系统的维护难度等...

从复杂度来说, (b)显然比(a)繁琐,而且效果也打折扣,当然UDP又另当别论.

[ 本帖最后由 system888net 于 2008-4-21 14:51 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2008-04-21 15:46 |只看该作者
原帖由 flw2 于 2008-4-21 13:52 发表
我做过类似的东西,和你的出奇的像,不过都是自己的做法,没有问过别人好不好,也没参考过别的资料
仅供参考

要考虑的东西有一些
首先,局域网这几个可以去掉吗?最好是别假设局域网,当然除非这样做能带来 ...


谢谢flw2一如既往的帮助和支持~~

论坛徽章:
0
16 [报告]
发表于 2008-04-21 15:48 |只看该作者
原帖由 system888net 于 2008-4-21 14:38 发表


(a)当然可以,不过你要打算做成产品的话,要考虑的方面要多些.
对于你设计的模型,除了先进性外,还要考虑实现的复杂度,以后升级的难度,还有系统的维护难度等...

从复杂度来说, (b)显然比(a)繁琐,而且效果也 ...


恩,谢谢system888net的再次解答,我以往的帖子你也帮过忙,对你很有印象,谢谢~~

论坛徽章:
0
17 [报告]
发表于 2008-04-21 20:10 |只看该作者
是 callcente 的吧。

录音一般靠板块, 软的性能不行。

论坛徽章:
0
18 [报告]
发表于 2008-04-21 21:34 |只看该作者
原帖由 benjiam 于 2008-4-21 20:10 发表
是 callcente 的吧。

录音一般靠板块, 软的性能不行。



哦,这个我不太了解哈~~

论坛徽章:
0
19 [报告]
发表于 2008-04-21 21:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
20 [报告]
发表于 2008-04-22 10:24 |只看该作者
心跳?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP