免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3538 | 回复: 4
打印 上一主题 下一主题

[SCO UNIX] 发送心跳包求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-21 19:17 |只看该作者 |倒序浏览
各位大虾,如果想在下面的代码里面插入发送心跳包的代码,要在哪里插入,不胜感激啊!!!!最好能够给出代码(参数格式可以忽略)
signal(SIGINT,SIG_IGN);
        signal(SIGTERM,sig_stop);
        signal(SIGCLD,SIG_IGN);
        {
                if ( (pid = fork()) < 0)
                        return -1;
                else if (pid != 0)
                        exit(0);
                setsid();
        }

        tlog(__FILE__,__LINE__,"Server[kmsf_zf] start");

        FD_ZERO(&iAllFds);
        FD_SET(iSock,&iAllFds);

        tv.tv_sec=1L;
        tv.tv_usec=0L;

        while ( !g_iStop )
        {
                rfds=iAllFds;
                FD_SET(iSock,&rfds);
                if ( (iRetCode=select(iSock+1,&rfds,NULL,NULL,&tv)) < 0 )
                {
                        if ( errno==EINTR || errno==EPROTO || errno==ECONNABORTED )
                                continue;
                        else
                        {
                                tlog(__FILE__,__LINE__,"Select fail: %d",errno);
                                return -1;
                        }
                }

                if ( iRetCode==0 )
                        continue;

                if ( FD_ISSET(iSock,&rfds) )
                {
                        iPeerLen=sizeof(struct sockaddr_in);       
                        iAcceptSock=accept(iSock,(struct sockaddr *)&tPeer,&iPeerLen);
                        if ( iAcceptSock<0 )
                        {
                                tlog(__FILE__,__LINE__,"Accept fail: %d",errno);
                                close(iAcceptSock);
                                continue;
                        }

                        if ( fork()==0 )
                        {
                                close(iSock);
                               
                                //报文转发处理
                                Transmit(iAcceptSock);

                                close(iAcceptSock);
                                exit (0);
                        }
                        close(iAcceptSock);
                }
        }
        tlog(__FILE__,__LINE__,"Server[kmsf_zf] stop");
        return 0;
}

论坛徽章:
0
2 [报告]
发表于 2010-10-21 19:25 |只看该作者
就是要定时向对方服务器发送心跳包,听说要新起一个进程,不知道怎么弄呢,急!!

论坛徽章:
0
3 [报告]
发表于 2010-10-22 09:39 |只看该作者
什么用途?做HA软件吗?

论坛徽章:
5
未羊
日期:2014-08-07 15:42:10双子座
日期:2014-09-23 15:42:172015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:282022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32
4 [报告]
发表于 2010-10-22 09:55 |只看该作者
发送心跳包,服务器端软件会自动建立一个socket.
如果原来无用的SOCKET就要清除.

论坛徽章:
0
5 [报告]
发表于 2010-10-22 20:11 |只看该作者
楼主不是在编写HA软件吧?这样发帖子是否泄漏秘密了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP