Advertisement
leonard007

Untitled

Dec 13th, 2023
1,230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.01 KB | None | 0 0
  1. // Server
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include <sys/socket.h>
  7. #include <arpa/inet.h>
  8. #include <unistd.h>
  9. #include <pthread.h>
  10.  
  11. #define PORT 8080
  12.  
  13. void* handle_client(void* arg) {
  14.     int client_sockfd = *(int*)arg;
  15.     free(arg);
  16.    
  17.     char buff[1024];
  18.     read(client_sockfd, buff, 1024);
  19.    
  20.     if(strcmp(buff, "cpuinfo") == 0) {
  21.         FILE* fp = fopen("/proc/cpuinfo", "r");
  22.         char cpuinfo[1024];
  23.         fread(cpuinfo, 1, 1024, fp);
  24.         fclose(fp);
  25.        
  26.         write(client_sockfd, cpuinfo, strlen(cpuinfo)+1);
  27.        
  28.     } else if(strcmp(buff, "meminfo") == 0) {
  29.         FILE* fp = fopen("/proc/meminfo", "r");
  30.         char meminfo[1024];
  31.         fread(meminfo, 1, 1024, fp);
  32.         fclose(fp);
  33.        
  34.         write(client_sockfd, meminfo, strlen(meminfo)+1);
  35.        
  36.     } else if(strcmp(buff, "lspci") == 0) {
  37.         FILE* fp = popen("lspci", "r");
  38.         char lspci[1024];
  39.         fread(lspci, 1, 1024, fp);
  40.         pclose(fp);
  41.        
  42.         write(client_sockfd, lspci, strlen(lspci)+1);
  43.     }
  44.    
  45.     close(client_sockfd);
  46. }
  47.  
  48. int main() {
  49.     int server_sockfd, client_sockfd;
  50.     struct sockaddr_in server_addr, client_addr;
  51.     socklen_t addr_size;
  52.     pthread_t tid;
  53.    
  54.     server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
  55.    
  56.     server_addr.sin_family = AF_INET;
  57.     server_addr.sin_port = htons(PORT);
  58.     server_addr.sin_addr.s_addr = INADDR_ANY;
  59.    
  60.     bind(server_sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
  61.    
  62.     listen(server_sockfd, 5);
  63.    
  64.     while(1) {
  65.         addr_size = sizeof(client_addr);
  66.         client_sockfd = accept(server_sockfd, (struct sockaddr*)&client_addr, &addr_size);
  67.        
  68.         int* p_client_sockfd = malloc(sizeof(int));
  69.         *p_client_sockfd = client_sockfd;
  70.        
  71.         pthread_create(&tid, NULL, handle_client, (void*)p_client_sockfd);
  72.     }
  73.    
  74.     return 0;
  75. }
  76.  
  77. // Client
  78.  
  79. #include <stdio.h>
  80. #include <sys/socket.h>
  81. #include <arpa/inet.h>
  82. #include <string.h>
  83. #include <unistd.h>
  84.  
  85. #define PORT 8080
  86.  
  87. int main() {
  88.    
  89.     char buff[1024];
  90.     int sockfd;
  91.     struct sockaddr_in server_addr;
  92.    
  93.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
  94.    
  95.     server_addr.sin_family = AF_INET;
  96.     server_addr.sin_port = htons(PORT);
  97.     server_addr.sin_addr.s_addr = INADDR_ANY;
  98.    
  99.     connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
  100.    
  101.     puts("1. CPU Info");
  102.     puts("2. Memory Info");
  103.     puts("3. PCI Devices");
  104.    
  105.     printf("Option: ");
  106.     fgets(buff, sizeof(buff), stdin);
  107.     buff[strlen(buff)-1] = '\0';
  108.    
  109.     if(strcmp(buff,"1") == 0) {
  110.        strcpy(buff,"cpuinfo");
  111.     } else if(strcmp(buff,"2") == 0) {
  112.        strcpy(buff,"meminfo");
  113.     } else if(strcmp(buff,"3") == 0) {
  114.        strcpy(buff,"lspci");  
  115.     }
  116.    
  117.     send(sockfd, buff, strlen(buff), 0);
  118.     recv(sockfd, buff, 1024, 0);
  119.    
  120.     puts(buff);
  121.    
  122.     close(sockfd);
  123.    
  124.     return 0;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement