Advertisement
Tolyamba

SPO_KR_v1

Dec 7th, 2016
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.10 KB | None | 0 0
  1. /* Необходимо разработать программу на Си из двух частей (клиент и сервер).
  2. Обмен между клиентом и сервером должен происходить с использованием сокетов ТСР.
  3. При этом на каждое обращение клиента сервер должен обрабатывать в отдельном процессе. */
  4. /* клиент должен передать серверу число, сервер должен передать клиенту сумму чисел,
  5. поступивших серверу, начиная от старта сервера */
  6.  
  7. /* КЛИЕНТ */
  8.  
  9. #include <sys/socket.h>
  10. #include <sys/types.h>
  11. #include <sys/wait.h>
  12. #include <netinet/in.h>
  13. #include <string.h>
  14.  
  15. int main(int argc , char *argv[])
  16. {
  17.     int sd = socket(AF_INET , SOCK_STREAM , 0); // создание сокета
  18.  
  19.     if (sd == -1) // проверка подключения
  20.     {
  21.         printf("Error!\nCan't open socket\n");
  22.     }  
  23.  
  24.     struct sockaddr_in name;
  25.     /* Связывание ранее созданного программного гнезда с именем (дескриптор ранее
  26.     созданного программного гнезда, адрес структуры которая содержит имя (идентификатор)
  27.     гнезда,  длина в байтах структуры )*/
  28.     int c = bind( , sd, );
  29.     if (c==-1)
  30.     {
  31.         printf("Error!\nCan't connect to socket\n");
  32.     }
  33.  
  34.     // Запрос связи с существующим программным гнездом со стороны процесса-клиента
  35.     int d = connect( , , );
  36.  
  37.     if (d == -1) //
  38.     {
  39.         printf("Error!\nCan't open socket\n");
  40.     }
  41.     else
  42.     {
  43.             /* ПЕРЕДАЧА ЧИСЛА write()*/
  44.             /* ПРИЁМ ЧИСЛА read()*/
  45.     }
  46.  
  47.     close(sd);
  48. }
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57. /* СЕРВЕР */
  58.  
  59. #include <sys/socket.h>
  60. #include <sys/types.h>
  61. #include <sys/wait.h>
  62. #include <netinet/in.h>
  63. #include <string.h>
  64.  
  65. int main(int argc,char **argv )
  66. {
  67.     int listener_d = socket(AF_INET, SOCK_STREAM, 0); // создание сокета
  68.         if (listener_d==-1) // проверка подключения
  69.         {
  70.             puts("Error!\nCan't open socket\n");
  71.         }
  72. struct sockaddr_in name;
  73.  
  74. int c = bind(listener_d, (struct sockaddr*) &name, sizeof(name));
  75.     if (c==-1)
  76.     {
  77.         puts("Error!\nCan't connect to socket\n");
  78.     }
  79.  
  80. /* Информирования о том, что процесс-сервер планирует установление
  81. виртуальных соединений через указанное гнездо */
  82. listen(listener_d, 10);
  83.  
  84. while (1)
  85. {
  86.     struct sockaddr_storage client_addr;
  87.         unsigned int sum = 0; // сумма
  88.         unsigned int s = 0; // входящее число
  89.         int connect_d = accept(listener_d, (struct sockaddr *)&client_addr, &s);    
  90.         sum += s;
  91.         /* Передача sum клиенту */
  92. }
  93.  
  94. close(connect_d);
  95. return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement