Advertisement
Tolyamba

SPO_KR_v4_server

Dec 20th, 2016
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.75 KB | None | 0 0
  1. /* Server*/
  2.  
  3. #include <sys/socket.h>
  4. #include <sys/types.h>
  5. #include <sys/wait.h>
  6. #include <netinet/in.h>
  7. #include <string.h>
  8. #include <stdlib.h>
  9. #include <stdio.h>
  10. #include <unistd.h>
  11. #include <netdb.h>
  12. #include <errno.h>
  13. #include <arpa/inet.h>
  14.  
  15. void error(char *msg)
  16. {
  17. perror(msg); // идентификация ошибки с выводом сообщения
  18. exit(0);
  19. }
  20.  
  21. int main(int argc,char **argv )
  22. {
  23.     int listener_d = socket(AF_INET, SOCK_STREAM, 0); // создание сокета
  24.         if (listener_d < 0) // проверка подключения
  25.         {
  26.             error("Error: can't open socket\n");
  27.         }
  28. struct sockaddr_in name;    
  29. name.sin_family=AF_INET;
  30. name.sin_port=htons(3000);
  31. name.sin_addr.s_addr=inet_addr("127.0.0.1");
  32.  
  33. int c = bind(listener_d, (struct sockaddr*) &name, sizeof(name));
  34.     if (c < 0)
  35.     {
  36.     error("Error: can't connect to socket\n");
  37.     }
  38.  
  39. /* Информирования о том, что процесс-сервер планирует установление
  40. виртуальных соединений через указанное гнездо */
  41. listen(listener_d, 10);
  42.  
  43. while (1)
  44. {
  45.     struct sockaddr_storage client_addr;
  46.         int s = 0; // сумма        
  47.         int connect_d = accept(listener_d, (struct sockaddr *)&client_addr, &s);
  48.     if (connect_d < 0)
  49.     {
  50.         error("Error on accept");
  51.     }
  52.    
  53.     char buf[1024];
  54.     int sum = 0;
  55.     int pid, n;
  56.     pid=fork();
  57.     if (pid == 0)
  58.     {
  59.         int n = read(connect_d, buf, sizeof(buf));
  60.         if (n < 0)
  61.         {
  62.             error("Error reading from socket");
  63.         }
  64.        
  65.         int buf1 = atoi(buf);
  66.         sum += buf1;
  67.  
  68.         n = write(connect_d, &sum, sizeof(sum));
  69.        
  70.         if (n < 0)
  71.  
  72.         {
  73.             error("Error writing to socket");
  74.         }
  75.        
  76.     }
  77. }
  78.  
  79. close(listener_d);
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement