linux客户端 存活检测,Linux下客户端检测服务器的 heartbeat

客户端代码,和一般的客户端不一样

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define MAXDATASIZE 100

int main()

{

int sockfd,nbytes,serv_port;

char buf_serv_ip[16],buf[260];

struct sockaddr_in serv_addr;

if((sockfd=socket(/*AF_INET,SOCK_STREAM,0*/PF_INET, SOCK_STREAM, IPPROTO_TCP))==-1){

perror("创建套接字失败!\n");

exit(1);

}

//创建套接字成功后设置其可重用的属性

int KeepAlive=1;

socklen_t KPlen=sizeof(int);

if(setsockopt(sockfd,SOL_SOCKET,SO_KEEPALIVE,(char *)&KeepAlive,KPlen)!=0){

perror("设置周期测试连接是否仍存活失败!\n");

exit(1);

}

int keepIdle = 10;//每次检测的相隔时间

int keepInterval = 1;//检测前的空间时间

int keepCount = 3;//最大检测次数

setsockopt(sockfd,SOL_TCP,TCP_KEEPINTVL,(void *)&keepIdle,sizeof(keepIdle));

setsockopt(sockfd,SOL_TCP,TCP_KEEPIDLE,(void *)&keepInterval,sizeof(keepInterval));

setsockopt(sockfd,SOL_TCP,TCP_KEEPCNT,(void *)&keepCount,sizeof(keepCount));

printf("请输入要连接主机的IP地址:\n");

scanf("%s",buf_serv_ip);

printf("请输入要连接主机的端口号:\n");

scanf("%d",&serv_port);

serv_addr.sin_family=AF_INET;

serv_addr.sin_addr.s_addr=inet_addr(buf_serv_ip);

serv_addr.sin_port=htons(serv_port);

bzero(&(serv_addr.sin_zero),8);

if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1){

perror("连接服务器失败!\n");

exit(1);

}

if((getsockopt(sockfd,SOL_SOCKET,SO_KEEPALIVE,(char*)&KeepAlive,&KPlen))==0){

printf("SO_KEEPALIVE Value: %d\n", KeepAlive);

}

printf("连接服务器成功!\n");

//在此处可以先接受判断将要接受数据的长度再创建数组

int i =0;

int res = 0;

int errcode;

fd_set readmask;

struct timeval timeout;

while(1){

FD_ZERO(&readmask);

FD_SET(sockfd, &readmask);

timeout.tv_sec = 1;

timeout.tv_usec = 0;

if ((res = select(sockfd + 1, &readmask, NULL, NULL, &timeout)) < 0)

{

printf("the socket is error\n");

exit(1);

}

printf("select return %d\n", res);

if(res == 0)

{//检测连接是否超时,可能服务器长时间没发数据

int sockfdtemp;

errno = 0;

printf("连接超时\n");

/*

if((sockfdtemp=socket(AF_INET,SOCK_STREAM,0))==-1){

perror("超时接字失败!\n");

exit(1);

}

if(connect(sockfdtemp,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1){

printf("超时连接服务器失败!\n");

errcode = errno;u

//close(sockfdtemp);

if (errcode != ENOENT && errcode != ECONNREFUSED) {

printf("Failed to establish connection: %d\n", errcode);

}

//continue;

//exit(1);

}else

{

printf("服务器没挂!\n");

//close(sockfdtemp);

}

close(sockfdtemp);

*/

continue;

}

/* 处理Slave端连接请求 */

if( (sockfd != -1 ) && FD_ISSET(sockfd, &readmask) )

{

printf("the socket is ok\n");

memset(buf, 0, 260);

errno = 0;

if((nbytes=recv(sockfd,buf,260,0))==-1){

printf("接受数据失败!\n");

errcode = errno;

if(errcode == ETIMEDOUT)

{//服务器真正的挂掉

printf("******服务器挂掉 %d : %d \n", errno, ETIMEDOUT);

exit(1);

}

}

if (nbytes == 0)

{

printf("数据为空: %d\n", i);

}

else

{

buf[nbytes]='\0';

printf("接受的数据为:%d\n", i);

}

}else

{

printf("the socket is not OK\n");

exit(1);

}

i++;

}

close(sockfd);

return 0;

}0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python object单引号变成双引号_Python学习第163课--Linux命令行中的单引号和双引号...

【每天几分钟&#xff0c;从零入门python编程的世界&#xff01;】我们都知道引号的作用就是为了引用&#xff0c;比如引用别人说的话&#xff0c;这句话就放在引号里面。而Linux命令行中的single quote(单引号)和dubble quote(双引号)有不同的作用。●双引号linux命令中双引号…

C语言条件循环语句执行步骤,C语言中for语句的执行过程是什么?

C语言中for语句的执行过程是&#xff1a;1、会先判断条件表达式是否成立&#xff0c;如果条件成立则执行中间循环体&#xff0c;执行完中间循环体后接着执行末尾循环体 &#xff1b;2、在执行完末尾循环体后对条件表达式再次判断&#xff0c;若条件还成立&#xff0c;则继续重复…

c语言规范标准中英文,C语言中英文翻译资料.doc

C语言中英文翻译资料.docThe C Programming LanguageC is a high-level programming language developed by Dennis Ritchie and Brian Kernighan at Bell Labs in the mid-1970s. Although originally designed as a systems programming language, C has proved to be a powe…

SQL语言深入

数据库系统 数据库系统主要有以下 3 个组成部分&#xff1a; 1 . 数据库&#xff1a;用于存储数据的地方。 2 . 数据库管理系统&#xff1a;用于管理数据库的软件。 3 . 数据库应用程序&#xff1a;为了提高数据库系统的处理能力所使用的管理数据库库的软件补充。 数据库管…

加法的横式竖式教案c语言,20以内竖式加减法教案

【www.ahanw.cn--活动致辞】活动意图&#xff1a;数学的加减法运算很重要。特别是20以内的加减法是各种数字运算的基础。学好20以内的加减法&#xff0c;有利于活化孩子的头脑&#xff0c;发展孩子的思维。活动目标&#xff1a;1、感知进位加、退位减的算法&#xff0c;整理和归…

c语言平面向量加法考点,平面向量的加减法怎么死活都不会?有没有什么口诀?例如:向量AB+BC=?向量OA-OB=?向量AB-CB=?有没有什么口诀!...

设a(x,y),b(x,y).1、向量的加法向量的加法满足平行四边形法则和三角形法则.ABBCAC.ab(xx,yy).a00aa.向量加法的运算律&#xff1a;交换律&#xff1a;abba&#xff1b;结合律&#xff1a;(ab)ca(bc).2、向量的减法如果a、b是互为相反的向量,那么a-b,b-a,ab0.0的反向量为0AB-ACC…

neo4j browser执行脚本后不提示用时_还不懂什么是分层自动化测试的,有赞的实践经历告诉你...

来源&#xff1a;https://testerhome.com/articles/19109# 背景先理一下自动化测试的概念&#xff0c;从广义上来说&#xff0c;一切通过工具(程序)的方式来代替或者辅助手工测试的行为都可以成为自动化。从狭义上来说&#xff0c;通过编写脚本的方式&#xff0c;模拟手工测试…

android+自定义alertdialog,安卓自定义AlertDialog

AlertDialog.png使用方法 example:DialogUtil.showAlertDialog(getActivity(), R.mipmap.restart, "退出提示", "你确定要退出吗&#xff1f;"),"确定", "取消", true, new DialogUtil.AlertDialogBtnClickListener() {Overridepublic…

mysql datetime 后面带了很多0_面试官:MySQL 表设计要注意什么?

作者 孤独烟来自公众号&#xff1a;孤独烟引言大家应该知道烟哥最近要(tiao 咳咳咳)&#xff0c;嗯&#xff0c;不可描述&#xff01;随手讲其中一部分知识&#xff0c;都是一些烟哥自己平时工作的总结以及经验。大家看完&#xff0c;其实能避开很多坑。而且很多问题&#xff0…

android studio viewo,Android Studio 之 ViewModel

ViewModel 是 JetPack 类库中的一个功能&#xff0c;可以保存控件的状态 &#xff0c;在整个Activity 生命周期中&#xff0c;状态不会失效如屏幕翻转时&#xff0c;状态可保留&#xff0c;不会失效&#xff01;与 LiveData 配合使用&#xff01;配合 Room 进行 Sqlite 操作数据…

极域电子书包课堂管理系统_朝阳群众说小康 | 从黑板课本到VR互动课堂、电子书包,朝阳的课堂如此有趣!...

教育变迁一支粉笔、一块黑板、一本教材曾经是教师上课沿袭了几十年的“三大法宝”随着时代发展当科技遇上了教育课堂上又会擦出什么样的火花呢&#xff1f;今天&#xff0c;小朝带你走进咱朝阳的校园一探究竟不一young的朝阳教育近日&#xff0c;教育部“基于教学改革、融合信息…

安装引导黑屏_给电脑安装系统老是装不上,重启就黑屏,原来是这项设置在作怪!...

很多人和我反映说&#xff1a;给电脑安装系统重启电脑后就黑屏无法正确解压系统&#xff0c;这个问题大家有没有遇到呢&#xff1f;遇到这个问题的人可能会认为自己电脑的硬盘坏了&#xff0c;明明已经把需要的Windows操作系统拷贝到硬盘已经成功了&#xff0c;重启电脑准备解压…

如果表不存在则创建_当创建一个文件的时候,操作系统发生了什么

操作文件是我们平时经常有的操作。但是我们可能并不是很了解他们原理&#xff0c;比如为什么删除一个很大的文件&#xff0c;会非常快&#xff1f;创建一个文件的时候&#xff0c;系统发生了什么&#xff1f;为什么删除的文件&#xff0c;还可以恢复&#xff1f;知其然知其所以…

两个html页面之间通讯,面试官:前端跨页面通信,你知道哪些方法?

引言在浏览器中&#xff0c;我们可以同时打开多个Tab页&#xff0c;每个Tab页可以粗略理解为一个“独立”的运行环境&#xff0c;即使是全局对象也不会在多个Tab间共享。然而有些时候&#xff0c;我们希望能在这些“独立”的Tab页面之间同步页面的数据、信息或状态。正如下面这…

默认选中_双击dwg图纸,怎么设置默认天正打开?

文尾左下角阅读原文看视频教程好课推荐&#xff1a;零基础CAD&#xff1a;点我CAD室内&#xff1a;点我 周站长CAD&#xff1a;点我CAD机械&#xff1a;点我 Bim教程&#xff1a;点我CAD建筑&#xff1a;点我CAD三维&#xff1a;点我全屋定制&#xff1a;点我 ps教程&#xff1…

临颖一高2021高考成绩查询,临颍一高举办2021年决战高考百日冲刺誓师大会

原标题&#xff1a;临颍一高举办2021年决战高考百日冲刺誓师大会3月4日&#xff0c;县一高举办2021年决战高考百日冲刺誓师大会&#xff0c;擂响了百日冲刺的战鼓&#xff0c;全校5800余名师生参加誓师大会。誓师大会在激昂雄壮的国歌声中拉开了序幕。县一高校长巩海生满怀深情…

2021年慈溪中学高考成绩查询,2021年慈溪市高考状元名单资料,今年慈溪市高考状元多少分...

高考状元一直都备受大家的关注&#xff0c;不管对于学校和还是当地教育系统&#xff0c;都是一件荣誉的事情。高考状元历来都诞生于艳羡的目光中&#xff0c;大家为他们的高分叫好&#xff0c;羡慕他们可以一步踏入国内知名学府。本文高考升学网为大家介绍历年慈溪市高考状元的…

网际风全推数据接口_智能风控系统设计与实践

导读在主流互联网产品中&#xff0c;比如搜索和推荐的系统&#xff0c;为了挖掘用户潜在购买需求&#xff0c;缩短用户到商品或信息的距离&#xff0c;提高用户的使用体验&#xff0c;都需要使用大量的特征来刻画用户的行为。在信息安全领域&#xff0c;建立在人工智能技术之上…

esp8266 html文件,ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件(示例代码)

场景&#xff1a;在写ESP8266 web服务的时候&#xff0c;免不了要将自己设计的网页html和css等文件放入到固件中。在arduino中有fs可以进行上传文件&#xff0c;然后通过文件系统读出。那在ESP-IDF中该怎么办呢。有几个思路1. 通过flash_download_tools 直接向固定地址写入文件…

高中计算机教师考试专业知识,高中教师资格证计算机专业考试内容

【导读】高中教师资格证计算机专业考综合素质、教育知识与能力和学科知识与教学能力&#xff0c;学科知识与教学能力是考计算机科学与技术的专业知识。高中教师资格证计算机专业考试内容高中教师资格证计算机专业考综合素质、教育知识与能力和学科知识与教学能力&#xff0c;学…