⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bi_client.c

📁 网管程序.应用于网管主机之间按照规则交换网管数据
💻 C
字号:
/***************************************************************************     文件名称: bi_client.c*     功    能:  天津移动BI与网管接口客户端*                *     作    者:  夏颖昌*     编写日期:  2005.01*     编写地点:  天津移动*     编写单位:  创我科技**************************************************************************/#include        <signal.h>#include	<sys/types.h>#include	<sys/ipc.h>#include	<sys/msg.h>#include	<fcntl.h>#include	<stdio.h>#include	"ipc_define.h"#include 	"binm_socket.h"#include 	"md5c_tjbi.h"#ifndef         __DEBUG__#define         __DEBUG__#endifint main( int argc, char *argv[] ){   int		cSockFD;   FILE		*listFP;   char		strDataFileHeader[ 50 + 1 ];   char		strDataFile[ 50 + 1 ];   char		strMD5File[ 50 + 1 ];   char		strSequence[ 50 + 1 ];   char		strDateTime[ 20 + 1 ];	   char		strDay[ 9 + 1 ];   int		i;	//计数器   int		j;   int		k;   int		sts;   int		n;	//返回值判断   char		strExe[ 250 + 1 ];   int		pid;   int		pidStatus;   char		strDigestD[ 50 + 1 ];   char		strBase64D[ 50 + 1 ];   int		nLenBase64D;   char		strDigestM[ 50 + 1 ];	   char		strBase64M[ 50 + 1 ];   socklen_t	len_on;   const long	on = 1;   PNMP_DATA	g_pPnmpData;   char		g_strBuffer[ MAX_NUM + 1 ];   MSG_BUFFER	msg_buffer;   MSG_BUFFER	msg_buffer2;   long		key;   int		msgid, msgid2, msgid3;   int		len;   char		*msgpath="/home/interface/nm_socket";		   len_on = sizeof ( long ) ;   struct sockaddr_in biSockAddr;   //经分socket地址   struct sockaddr_in nmSockAddr;   //网管socket地址   signal(SIGPIPE, SIG_IGN);   key = ftok( msgpath, 'a' );		   if ( argc == 1)   {      GetTime(strDateTime);      memset(strDay, 0x00, sizeof(strDay));       strncpy(strDay, strDateTime, 8);   }	   else if ( argc == 2 )   {      strcpy(strDay, argv[1]);		   }   else   {      printf("Usage: bi_client or bi_client YYYYMMDD\n");             exit( -1 );   }	SOCKET:   if (( cSockFD = socket( AF_INET, SOCK_STREAM, 0 )) < 0 )   {      printf("Error: Create the client socket!\n");#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Create the client socket!\n");#endif      exit( 1 );   }   printf( "Client socket id is: [%d]\n", cSockFD );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Client socket id is: [%d]\n", cSockFD );#endif	   //绑定到 网管服务端	   bzero( &nmSockAddr, sizeof( nmSockAddr ));   nmSockAddr.sin_family =  AF_INET;   nmSockAddr.sin_port = htons( NM_PORT );   //nmSockAddr.sin_addr = nm_ip_addr;    //需要网管端的地址   //转换网管服务端地址   if ( !inet_aton( NM_HOST_IP, &nmSockAddr.sin_addr ))   {      printf( "Error: Call the inet_aton!\n");#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Call the inet_aton!\n");#endif      exit( 1 );   }	   //printf("The nmSockAddr.sin_addr.s_addr is : %x\n", nmSockAddr.sin_addr.s_addr);	//连接到 网管服务端CONNECT:   while( 1 )  {      if( connect( cSockFD, ( struct sockaddr* )&nmSockAddr, sizeof( struct sockaddr )) < 0 )      {         printf( "Error: Can not Connect to netm : %s\n", strerror( errno ));#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Can not Connect to netm : %s\n", strerror( errno ));#endif         sleep( 1 );         shutdown ( cSockFD, SHUT_WR );         close( cSockFD );         //continue;         goto SOCKET;      }      else      {         printf( "Connect to netm is successful!\n");#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Connect to netm is successful!\n");#endif         //break;      }   //发送鉴权请求(若收到鉴权确认, 作循环操作)AUTH:   for(;;)      {      //printf("Now Send the Req Auth; Times [%d]\n", i+1 );      if ( SendReqAuth( cSockFD ) < 0 )		      {         printf( "Error: call SendReqAuth Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: call SendReqAuth Failed!\n" );#endif         continue;      }      InitStruct( &g_pPnmpData );      sts = ReceiveData( cSockFD, &g_pPnmpData );       if( sts < 0 )      //接收鉴权确认      {         printf( "Error: Receive Auth Req  Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Receive Auth Req  Failed!\n" );#endif         shutdown ( cSockFD, SHUT_WR );         close( cSockFD );         goto SOCKET;      }      else      {         if ( g_pPnmpData.pdStatus != 0 )         {            sleep( 5 );            continue;           }         else         {            printf( "Auth successfully!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Auth successfully!\n" );#endif            break;         }      }   }SYNC:   for(;;)   {      //监控调度任务处理模块      msgid3 = msgget( 0x666, IPC_CREAT|0666 );      memset( msg_buffer.data_buffer, 0x00, sizeof( msg_buffer.data_buffer ));      len = msgrcv( msgid3, msg_buffer.data_buffer, 		sizeof( msg_buffer.data_buffer ), 0, IPC_NOWAIT|MSG_NOERROR );      if ( len >= 0 )      {         printf("receive data---------[%s]\n", msg_buffer.data_buffer );         printf("receive len ---------[%d]\n", len );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "receive data---------[%s]\nreceive len ---------[%d]\n", msg_buffer.data_buffer, len );#endif         if(memcmp( msg_buffer.data_buffer, "ReqTask", 7 ) == 0 )         {            //产生一个任务sequence            GetTime( strSequence );            //strcpy( strDataFile, "M0402520050512100000.avl" );            memset(( char *)strDataFile, 0x00, sizeof( strDataFile ));            memcpy( strDataFile, msg_buffer.data_buffer + 7, 20 );            //memcpy( strDataFile + 6, strSequence, 8 );            //memcpy( strDataFile + 14, "100000.avl", 10 );            //memcpy( strDataFile + 14, msg_buffer.data_buffer + 13, 6 );            memcpy( strDataFile + 20, ".avl", 4 );            printf( "strDataFile:[%s]\n", strDataFile );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "strDataFile:[%s]\n", strDataFile );#endif            if ( SendReqTask( cSockFD, strSequence, strDataFile ) < 0 )            {               printf( "Error: call SendReqTask Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: call SendReqTask Failed!\n" );#endif               //exit ( -1 );               shutdown ( cSockFD, SHUT_WR );               close( cSockFD );               goto SOCKET;            }            InitStruct( &g_pPnmpData );            sts = ReceiveData( cSockFD, &g_pPnmpData );            if( sts < 0 )            {               printf( "Error: Receive ReqTask  Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Receive ReqTask  Failed!\n" );#endif               shutdown ( cSockFD, SHUT_WR );               close( cSockFD );               goto SOCKET;            }            else            {               if ( g_pPnmpData.pdStatus != 2 )               {                  printf( "Error: ReqTask Failed---The pdStatus=[%d]\n", g_pPnmpData.pdStatus );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: ReqTask Failed---The pdStatus=[%d]\n", g_pPnmpData.pdStatus );#endif               }               else               {REQTASK:                  msgid2 = msgget( key, IPC_CREAT|0777 );                  BuildData( &g_pPnmpData, msg_buffer2.data_buffer );                  msgsnd( msgid2, msg_buffer2.data_buffer, 				sizeof( msg_buffer2.data_buffer ), IPC_NOWAIT );                   //等待下载完成                  while( 1 )                  {                     msgid = msgget( 0x888, IPC_CREAT|0666 );                     memset( msg_buffer.data_buffer, 0x00, sizeof( msg_buffer.data_buffer ));                     len = msgrcv( msgid, msg_buffer.data_buffer, 		     sizeof( msg_buffer.data_buffer ), 0, IPC_NOWAIT|MSG_NOERROR );                     if( len >= 0 )                        break;                     sleep( 1 );                  }               }            }         }         if(memcmp( msg_buffer.data_buffer, "FtpTaskSucc", 11 ) == 0 )         {            if ( SendMsgTaskSucc( cSockFD, strSequence, strDataFile ) < 0 )            {               printf( "Error: call SendMsgTaskSucc Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: call SendMsgTaskSucc Failed!\n" );#endif               //exit ( -1 );               shutdown ( cSockFD, SHUT_WR );               close( cSockFD );               goto SOCKET;            }            InitStruct( &g_pPnmpData );            sts = ReceiveData( cSockFD, &g_pPnmpData );            if( sts < 0 )            {               printf( "Error: Receive MsgTask  Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Receive MsgTask  Failed!\n" );#endif               shutdown ( cSockFD, SHUT_WR );               close( cSockFD );               goto SOCKET;            }         }         if(memcmp( msg_buffer.data_buffer, "MD5Error", 8 ) == 0 )         {            if ( SendMsgTaskFail( cSockFD, strSequence, strDataFile ) < 0 )            {               printf( "Error: call SendMsgTaskFail Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: call SendMsgTaskFailFailed!\n" );#endif               //exit ( -1 );               shutdown ( cSockFD, SHUT_WR );               close( cSockFD );               goto SOCKET;            }            InitStruct( &g_pPnmpData );            sts = ReceiveData( cSockFD, &g_pPnmpData );            if( sts < 0 )            {               printf( "Error: Receive MsgTask  Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Receive MsgTask  Failed!\n" );#endif               shutdown ( cSockFD, SHUT_WR );               close( cSockFD );               goto SOCKET;            }         }      }      //else         //printf( "read IPC failed\n" );      //msgctl( msgid, IPC_RMID, NULL );            //同步      if ( SendReqSync( cSockFD ) != 0 )      {         printf( "Error: call SendReqSync Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: call SendReqSync Failed!\n" );#endif         shutdown ( cSockFD, SHUT_WR );         close( cSockFD );         goto SOCKET;         //continue;      }      InitStruct( &g_pPnmpData );      sts = ReceiveData( cSockFD, &g_pPnmpData );       if( sts < 0 )      {         printf( "Error: Receive Sync Ack  Failed!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Error: Receive Sync Ack  Failed!\n" );#endif         shutdown ( cSockFD, SHUT_WR );          close( cSockFD );         goto SOCKET;      }      else      {         if ( g_pPnmpData.pdStatus != 0 )         {            printf( "Sync failed---Status=[%d]\n", g_pPnmpData.pdStatus );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Sync failed---Status=[%d]\n", g_pPnmpData.pdStatus );#endif            if ( g_pPnmpData.pdStatus == 2 )               goto REQTASK;         }         else         {            printf( "Sync successfully!\n" );#ifdef __DEBUG__   client_message_report( __FILE__, __LINE__, "Sync successfully!\n" );#endif         }      }      sleep( 30 );   }  //大的循环connect  }  shutdown ( cSockFD, SHUT_WR );  close( cSockFD );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -