linux负载监控

linux端代码:

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include <assert.h>#include <net/if.h>#include <sys/ioctl.h>#define MAXLINE 4096int getHostIP(char *ipaddr, int interface){    int                 sockfd;    struct ifreq        req;       if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0))<0)    {        perror ("socket");        return -1;    }       memset(&req, 0, sizeof(struct ifreq));    sprintf(req.ifr_name, "eth%d", interface);    // get current ip addr    if (ioctl(sockfd, SIOCGIFADDR, (char*)&req))    {        perror(req.ifr_name);        return -1;    }    else    {        struct in_addr ip_addr;        char * tmpstr;        ip_addr.s_addr = *((int*) &req.ifr_addr.sa_data[2]);        tmpstr = inet_ntoa(ip_addr);        strcpy(ipaddr, tmpstr);    }       close(sockfd);       return 0;}int main(int argc, char** argv){    int    sockfd, n;    char    recvline[4096], sendline[4096];    struct sockaddr_in    servaddr;int index=1;FILE * f1;char c[10],d[10],memory[80];int mem_total,mem_free;char tmp_str[32];int interface = 0;strcpy(tmp_str,"000.000.000.000");if (0 == getHostIP(tmp_str, interface))    {        printf("eth%d IP address is %s\n", interface,tmp_str);    }for(;;index++){if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){printf("create socket error: %s(errno: %d)\n", strerror(errno),errno);exit(0);}memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(6666);if( inet_pton(AF_INET, "172.18.131.244", &servaddr.sin_addr) <= 0){printf("inet_pton error for %s\n","172.18.131.244");exit(0);}if( connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0){printf("connect error: %s(errno: %d)\n",strerror(errno),errno);exit(0);}    f1 = fopen("/proc/meminfo","r");  fscanf(f1, "%s\t%d\t%s",c,&mem_total,d);  //printf("mem total: %d\n", mem_total);  fscanf(f1, "%s\t%d\t%s",c,&mem_free,d);  //printf("mem free: %d\n", mem_free);  fclose(f1);  sprintf(sendline,"%s , memory total and memory free are %3d KB ; %3d KB\n",tmp_str,mem_total,mem_free);if( send(sockfd, sendline, strlen(sendline)+1,0) < 0){printf("send msg error: %s(errno: %d)\n", strerror(errno), errno);exit(0);}sleep(1);//1 secondsclose(sockfd);}    exit(0);} 

windows监控端代码:

#include <stdio.h>#include <Winsock2.h>#pragma comment( lib, "ws2_32.lib" )  ////////////////////////////////////////////////////////////////////////////管理平台代码//////////////////////////////////////////////////////////////////////////void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) {return;}if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {WSACleanup( );return;}SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6666);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,5);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(1){SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);//char sendBuf[50];//sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));//send(sockConn,sendBuf,strlen(sendBuf)+1,0);char recvBuf[80];recv(sockConn,recvBuf,80,0);printf("%s\n",recvBuf);closesocket(sockConn);}}

如果上一个linux端的版本报错请用这个版本:

#include <stdio.h>  #include <stdlib.h>  #include <error.h>  #include <string.h>  #include <netdb.h>   #include <sys/types.h>  #include <netinet/in.h>   #include <sys/socket.h>   #include <unistd.h>   #include <sys/ioctl.h>  #include <net/if_arp.h>  #include <net/if.h>  #include <arpa/inet.h>  int main(int argc, char** argv)  {  int    sockfd, n;  char   sendline[512];  struct sockaddr_in    servaddr;  int index=1;  FILE * f1;  char c[10],d[10],memory[80];  int mem_total,mem_free;  int interface = 0;    char ipbuf[16]; memset(ipbuf,'1',sizeof(ipbuf));getlocaip(ipbuf);  for(;;index++)  {  if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){  printf("create socket error\n");  exit(0);  }    memset(&servaddr, 0, sizeof(servaddr));  servaddr.sin_family = AF_INET;  servaddr.sin_port = htons(6666);  if( inet_pton(AF_INET, "192.168.0.24", &servaddr.sin_addr) <= 0){  printf("inet_pton error for %s\n","192.168.0.24");  exit(0);  }    if( connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0){  printf("connect error\n");  exit(0);  }    f1 = fopen("/proc/meminfo","r");      fscanf(f1, "%s\t%d\t%s",c,&mem_total,d);    //printf("mem total: %d\n", mem_total);    fscanf(f1, "%s\t%d\t%s",c,&mem_free,d);    //printf("mem free: %d\n", mem_free);    fclose(f1);      sprintf(sendline,"%s , memory total and memory free are %3d KB ; %3d KB\n",ipbuf,mem_total,mem_free);    if( send(sockfd, sendline, strlen(sendline)+1,0) < 0)  {  printf("send msg error\n");  exit(0);  }    sleep(1);//1 seconds          close(sockfd);  }    exit(0);  }    int getlocaip(char *ip)    {      int sockfd;         if(-1 == (sockfd = socket(PF_INET, SOCK_STREAM, 0)))      {            //perror( "socket" );           return -1;       }           struct ifreq req;        struct sockaddr_in *host;        bzero(&req, sizeof(struct ifreq));       strcpy(req.ifr_name, "eth0");       ioctl(sockfd, SIOCGIFADDR, &req);       host = (struct sockaddr_in*)&req.ifr_addr;       strcpy(ip, inet_ntoa(host->sin_addr));  //memcpy(ip,inet_ntoa(host->sin_addr),16);    close(sockfd);        return 1;   } 

希望你灰暗的心情在此刻明亮起来,去迎接美好的明天!

linux负载监控

相关文章:

你感兴趣的文章:

标签云: