Advertisement
Tolyamba

SPO_KR_v2

Dec 18th, 2016
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.73 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.     int d = connect( , , );
  28.  
  29.     if (d == -1) //
  30.     {
  31.         printf("Error!\nCan't open socket\n");
  32.     }
  33.     else
  34.     {
  35.             /* ПЕРЕДАЧА ЧИСЛА write()*/
  36.             /* ПРИЁМ ЧИСЛА read()*/
  37.     }
  38.  
  39.     close(sd);
  40. }
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. /* СЕРВЕР */
  50.  
  51. #include <sys/socket.h>
  52. #include <sys/types.h>
  53. #include <sys/wait.h>
  54. #include <netinet/in.h>
  55. #include <string.h>
  56.  
  57. int main(int argc,char **argv )
  58. {
  59.     int listener_d = socket(AF_INET, SOCK_STREAM, 0); // создание сокета
  60.         if (listener_d==-1) // проверка подключения
  61.         {
  62.             puts("Error!\nCan't open socket\n");
  63.         }
  64. struct sockaddr_in name;
  65.  
  66. int c = bind(listener_d, (struct sockaddr*) &name, sizeof(name));
  67.     if (c==-1)
  68.     {
  69.         puts("Error!\nCan't connect to socket\n");
  70.     }
  71.  
  72. /* Информирования о том, что процесс-сервер планирует установление
  73. виртуальных соединений через указанное гнездо */
  74. listen(listener_d, 10);
  75.  
  76. while (1)
  77. {
  78.     struct sockaddr_storage client_addr;
  79.         unsigned int sum = 0; // сумма
  80.         unsigned int s = 0; // входящее число
  81.         int connect_d = accept(listener_d, (struct sockaddr *)&client_addr, &s);    
  82.         /* создание процесса, в котором читаются данные, выполняется действие, посылается ответ */
  83. }
  84.  
  85. close(connect_d);
  86. return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement