Advertisement
Tolyamba

SPO_v3

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