-
大小: 8KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-05-19
- 语言: C/C++
- 标签: 心跳包 Hearthbeat
资源简介
C语言实现的心跳包
代码片段和文件信息
#include “etcp.h“
#include “heartbeat.h“
int main( int argc char **argv )
{
fd_set allfd;
fd_set readfd;
msg_t msg;
struct timeval tv;
SOCKET s;
int rc;
int heartbeats = 0;
int cnt = sizeof( msg );
INIT();
s = tcp_client( argv[ 1 ] argv[ 2 ] );
FD_ZERO( &allfd );
FD_SET( s &allfd );
tv.tv_sec = T1;
tv.tv_usec = 0;
for ( ;; )
{
readfd = allfd;
rc = select( s + 1 &readfd NULL NULL &tv );
if ( rc < 0 )
error( 1 errno “select failure“ );
if ( rc == 0 ) /* timed out */
{
if ( ++heartbeats > 3 )
error( 1 0 “connection dead\n“ );
error( 0 0 “sending heartbeat #%d\n“ heartbeats );
msg.type = htonl( MSG_HEARTBEAT );
rc = send( s ( char * )&msg sizeof( msg ) 0 );
if ( rc < 0 )
error( 1 errno “send failure“ );
tv.tv_sec = T2;
continue;
}
if ( !FD_ISSET( s &readfd ) )
error( 1 0 “select returned invalid socket\n“ );
rc = recv( s ( char * )&msg + sizeof( msg ) - cnt
cnt 0 );
if ( rc == 0 )
error( 1 0 “server terminated\n“ );
if ( rc < 0 )
error( 1 errno “recv failure“ );
heartbeats = 0;
tv.tv_sec = T1;
cnt -= rc; /* in-line readn */
if ( cnt > 0 )
continue;
cnt = sizeof( msg );
/* process message */
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-10-18 23:10 heartbeat\
文件 1470 2012-10-18 23:09 heartbeat\etcp.h
文件 1241 2012-10-18 23:09 heartbeat\hb_client.c
文件 1631 2012-10-18 23:09 heartbeat\hb_server.c
文件 440 2012-10-18 23:09 heartbeat\heartbeat.h
文件 479 2012-10-18 23:09 heartbeat\readn.c
文件 776 2012-10-18 23:09 heartbeat\readvrec.c
文件 452 2012-10-18 23:09 heartbeat\skel.h
文件 423 2012-10-18 23:10 heartbeat\tcp_client.c
文件 633 2012-10-18 23:10 heartbeat\tcp_server.c
文件 3461 2012-10-18 23:10 heartbeat\tcpsink.c
文件 2040 2012-10-18 23:10 heartbeat\util.c
文件 450 2012-10-18 23:10 heartbeat\vrc.c
文件 647 2012-10-18 23:10 heartbeat\vrs.c
- 上一篇:vc++6.0配置OpenCV
- 下一篇:c语言 图书管理系统87261
评论
共有 条评论