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

📄 send_message_toserver.cxx

📁 HPunix下资源监视程序,查看监视进程的CPU、内存的参数
💻 CXX
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include <unistd.h>#include "myptop.h"#include "sysmonitor.h"#include <netdb.h>#include <strings.h>#include <stdlib.h>#include <string.h>#include <dcepm.h>#include <sys/sysinfo.h>#include <sys/types.h>#include <errno.h>#include  <dstruct.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/ioctl.h>#include <net/if.h>#include <signal.h>#include <fcntl.h>#include <sys/param.h>#include <sys/mount.h>#include <sys/pstat.h>extern int moni_interval;int getprocinfo_status=0;struct netrecord{	long netRx,netTx;}*prev_net_ptr,*cur_net_ptr;int net_num=0;   //number of net to be monitoredint proc_num=0;  //number of proc to be monitoredint part_num=0;  //number of partition to be monitorint getconfig_ok=0;struct NETMESSAGE *net_message_ptr,*net_message_ptr1;struct net_name *net_name_ptr,*net_name_ptr1;struct proc_name *proc_name_ptr,*proc_name_ptr1;struct part_name *part_name_ptr,*part_name_ptr1;struct NODEINFO *nodeinfo_ptr;struct PTHREADMESSAGE *pthread_message_ptr,*pthread_message_ptr1;struct PARTITIONMESSAGE *partition_message_ptr,*partition_message_ptr1;int getnetinfo (struct NETMESSAGE * net_message_ptr);int getmeminfo (int *Mem_size,float *Mem_used);int getcpuinfo (float *cpu_used);int getpartinfo(const char *dri_name,int *total_s,float *dri_use);int getpthreadinfo(char * procname,PTHREADMESSAGE * pthreadmes);int fill_message_toserver(char *ptr,int mestype);void send_allmsg_tosvr(int svr1,int svr2,int *svr1_flag,int *svr2_flag,char *buf_svr);struct pst_processor *psp,*psp_last;size_t nspu;int get_configinfo(int sockfd){				int retcode,j;		char config_buf[10];		retcode=Select_socket_status1(sockfd,1);			if(retcode<0)    {       				printf("Select_socket_status error  second\n");        return -1;    }      config_buf[0]=0xfc;    config_buf[1]=strlen(hostname);    strcpy(config_buf+2,hostname);        config_buf[strlen(hostname)+2]=0x16;		j=ptop_write_message(sockfd,config_buf,strlen(hostname)+3);		if(j<=0)		{				if((j==-2)||(j==-1))				{					close(sockfd);					return -1;				}		}		sleep(1);		while(1)		{			//printf("zhaiyong test2 %d\n",__LINE__);			retcode=Select_socket_status1(sockfd,0);			if(retcode<0)    	{       				printf("Select_socket_status error  first---- sockfd=%d \n",sockfd);      	return -1;    	}     	retcode=read(sockfd,config_buf,1);    	if(retcode<=0)			{				printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);				close(sockfd);				break;			}			//printf("zhaiyong test2 %d\n",__LINE__);    	if((unsigned char)config_buf[0]==0xfc)    	{    		retcode=Select_socket_status1(sockfd,0);				if(retcode<0)    		{       					printf("Select_socket_status error  first---- sockfd=%d \n",sockfd);      		return -1;    		}     		//get part_name to be monitored    		retcode=read(sockfd,config_buf,1);    		if(retcode<=0)				{					printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);					close(sockfd);					break;				}    		part_num=config_buf[0];    		//printf("part_num is %d\n",part_num);    		partition_message_ptr=(PARTITIONMESSAGE *)malloc(sizeof(struct PARTITIONMESSAGE)*part_num);    		part_name_ptr=(struct part_name *)malloc(sizeof(struct part_name)*part_num);    		retcode=Select_socket_status1(sockfd,0);				if(retcode<0)    		{       					printf("Select_socket_status error  first---- sockfd=%d \n",sockfd);      		return -1;    		}     		retcode=read(sockfd,part_name_ptr,sizeof(struct part_name)*part_num);	    		if(retcode<=0)				{					printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);					close(sockfd);					break;				}				for(int i=0;i<part_num;i++)				{					//printf("send %s\n",(part_name_ptr+i)->name);					strcpy((partition_message_ptr+i)->Id,(part_name_ptr+i)->name);					strcat((partition_message_ptr+i)->Id,"_");					strcat((partition_message_ptr+i)->Id,hostname);					//printf("send:%s\n",(partition_message_ptr+i)->Id);				}				//get pthread_name to be monitored				retcode=read(sockfd,config_buf,1);    		if(retcode<=0)				{					printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);					close(sockfd);					break;				}    		proc_num=config_buf[0];    		//printf("proc_num is %d\n",proc_num);    		pthread_message_ptr=(PTHREADMESSAGE *)malloc(sizeof(struct PTHREADMESSAGE)*proc_num);    		proc_name_ptr=(struct proc_name *)malloc(sizeof(struct proc_name)*proc_num);    		retcode=Select_socket_status1(sockfd,0);				if(retcode<0)    		{       					printf("Select_socket_status error  first---- sockfd=%d \n",sockfd);      		return -1;    		}     		retcode=read(sockfd,proc_name_ptr,sizeof(struct proc_name)*proc_num);	    		if(retcode<=0)				{					printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);					close(sockfd);					break;				} 					for(i=0;i<proc_num;i++)				{					//printf("send %s\n",(proc_name_ptr+i)->name);					strcpy((pthread_message_ptr+i)->Id,(proc_name_ptr+i)->name);					strcat((pthread_message_ptr+i)->Id,"_");					strcat((pthread_message_ptr+i)->Id,hostname);					//printf("send:%s\n",(pthread_message_ptr+i)->Id);				}    		//get net_name to be monitored    		retcode=read(sockfd,config_buf,1);    		if(retcode<=0)				{					printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);					close(sockfd);					break;				}    		net_num=config_buf[0];    		//printf("net_num is %d\n",net_num);    		net_message_ptr=(NETMESSAGE *)malloc(sizeof(struct NETMESSAGE)*net_num);    		net_name_ptr=(struct net_name *)malloc(sizeof(struct net_name)*net_num);    		retcode=Select_socket_status1(sockfd,0);				if(retcode<0)    		{       					printf("Select_socket_status error  first---- sockfd=%d \n",sockfd);      		return -1;    		}     		retcode=read(sockfd,net_name_ptr,sizeof(struct net_name)*net_num);	    		if(retcode<=0)				{					printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);					close(sockfd);					break;				}				for(i=0;i<net_num;i++)				{					//printf("%s\n",(net_name_ptr+i)->name);					strcpy((net_message_ptr+i)->Id,(net_name_ptr+i)->name);					strcat((net_message_ptr+i)->Id,"_");					strcat((net_message_ptr+i)->Id,hostname);					//printf("send:%s\n",(net_message_ptr+i)->Id);				}				prev_net_ptr=(struct netrecord*)malloc(sizeof(struct netrecord)*net_num);				cur_net_ptr=(struct netrecord*)malloc(sizeof(struct netrecord)*net_num);				bzero(prev_net_ptr,sizeof(struct netrecord)*net_num);				bzero(cur_net_ptr,sizeof(struct netrecord)*net_num);						retcode=read(sockfd,config_buf,1);    		if(retcode<=0)				{					printf("first recv sockfd = %d,  ret_value is %d  close SOCKET \n",sockfd,retcode);					close(sockfd);					break;				}				if((unsigned char)config_buf[0]==0x16)				{					getconfig_ok=1;					return 1;				}				    }   }}void send_message_toserver(){	int 	j,k;	int	m,n,ret;	hostent *ptr;	struct servent *sp;	char	temp,buf[10000];	int	socket_svr1,socket_svr2;	char	svr1_name[20],svr2_name[20];	char	svr1bak_name[20],svr2bak_name[20];	int	port,ret_code;	char	svr1_ip[100],svr2_ip[100],svr1bak_ip[100],svr2bak_ip[100];	int svr1_open_flag=0,svr2_open_flag=0;	int dualnet_flag=0; 	//printf("send_message_toserver ..........\n");	printf("local host is :%s \n",hostname);	if((sp=getservbyname("sysmonitor","tcp"))==NULL)	{		 printf("I can't found service  in /etc/services file !!!\n");		 exit(0);	}	port=ntohs(sp->s_port);	bzero(svr1_name,20);	bzero(svr2_name,20);	strcpy(svr1_name,"scd1");	strcpy(svr2_name,"scd2");	strcpy(svr1bak_name,"scd1-1");	strcpy(svr2bak_name,"scd2-1");	if(getenv("dualNetFlag"))	{		dualnet_flag=atoi(getenv("dualNetFlag"));	}	else	{		dualnet_flag=0;		}		ptr=gethostbyname("scd1");	if(!strcmp(ptr->h_name,""))	{		perror("get host by name scd1 is error exit:");	}	strcpy(svr1_ip,inet_ntoa(*((struct in_addr*)*(ptr->h_addr_list))));	printf("svr1_ip=%s\n",svr1_ip);	ptr=gethostbyname("scd2");	if(!strcmp(ptr->h_name,""))	{		perror("get host by name scd2 is error exit:");	}	strcpy(svr2_ip,inet_ntoa(*((struct in_addr*)*(ptr->h_addr_list))));	printf("svr2_ip=%s \n",svr2_ip);	if(dualnet_flag==1)	{		ptr=gethostbyname("scd1-1");		if(!strcmp(ptr->h_name,""))		{			perror("get host by name scd1-1 is error !:");		}		else		{			strcpy(svr1bak_ip,inet_ntoa(*((struct in_addr*)*(ptr->h_addr_list))));			printf("svr1bak_ip=%s\n",svr1_ip);		}		ptr=gethostbyname("scd2-1");		if(!strcmp(ptr->h_name,""))		{			perror("get host by name scd2-1 is error !:");		}		else		{			strcpy(svr2bak_ip,inet_ntoa(*((struct in_addr*)*(ptr->h_addr_list))));			printf("svr2bak_ip=%s \n",svr2_ip);		}				}	////////get cpu num of computer,prepare for get cpu info//////////////////	struct pst_dynamic psd;	if (pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0) == -1)	{		perror("pstat_getdynamic error!");	}	nspu = psd.psd_proc_cnt;	//how to free?	psp = (struct pst_processor *)malloc(nspu * sizeof(struct pst_processor));	psp_last = (struct pst_processor *)malloc(nspu * sizeof(struct pst_processor));	//////////////////	sleep(2); //wait for server to be ready!	while(1==1)	{		if(svr1_open_flag!=1)		{			svr1_open_flag=1;			if((socket_svr1=ptop_tcp_open(svr1_name,NULL,port)) < 0)			{				printf("wk_station tcp connect error svr1_ip socket socket_svr1 = %d \n",socket_svr1);				if(dualnet_flag==1)				{				   printf("begin to connect to serverbak!\n");				    if((socket_svr1=ptop_tcp_open(svr1bak_name,NULL,port)) < 0)				    {							printf("wk_station tcp connect error svr1bak_ip socket socket_svr1 = %d \n",socket_svr1);							svr1_open_flag=-1;				    }				    else				    {				    		if(getconfig_ok==0)				    			{										get_configinfo(socket_svr1);											}				    }				}								else				{					svr1_open_flag=-1;				}							}			else			{				if(getconfig_ok==0)				{								get_configinfo(socket_svr1);						}			}		}		if(svr2_open_flag!=1)		{			svr2_open_flag=1;			if((socket_svr2=ptop_tcp_open(svr2_name,NULL,port)) < 0)			{				printf("wk_station tcp connect error svr2_ip socket socket_svr2 = %d \n",socket_svr2);				if(dualnet_flag==1)				{				    printf("svr2bak_name=%s port=%d \n",svr2bak_name,port);				    if((socket_svr2=ptop_tcp_open(svr2bak_name,NULL,port)) < 0)				    {							printf("wk_station tcp connect error svr2bak_ip socket socket_svr1 = %d \n",socket_svr2);							svr2_open_flag=-1;			  		}			  		else			  		{			  			if(getconfig_ok==0)			  			{								get_configinfo(socket_svr2);								}			  		}					}				else				{					svr2_open_flag=-1;				}				}			else			{					if(getconfig_ok==0)					{						get_configinfo(socket_svr2);						}						  		}			}		while(1==1)		{			if((svr1_open_flag+svr2_open_flag)<2)			{				printf("svr1_open_flag is %d!!!!!!!!!!!!!!!!!\n",svr1_open_flag);				printf("svr2_open_flag is %d!!!!!!!!!!!!!!!!!\n",svr2_open_flag);			}			if((svr1_open_flag==-1)&&(svr2_open_flag==-1))			{				getconfig_ok=0;				break;			}			if(getconfig_ok==0)			{				break;				}			time_t time_local;			time(&time_local);			char *p;			p=ctime(&time_local);			printf("Report time is %s",p);			printf("Reporting... ...\n");			for(m=0;m<20;m++)			{				buf[m]=1;			}			send_allmsg_tosvr(socket_svr1,socket_svr2,&svr1_open_flag,&svr2_open_flag,buf);      printf("Report over!\n");			printf("\n\n********************************\n\n");			if((svr1_open_flag+svr2_open_flag)<2)			{				break;			}			sleep(moni_interval);		}

⌨️ 快捷键说明

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