Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <unistd.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <math.h>
  8. #include <limits.h>
  9. #include <string.h>
  10.  
  11. int perform(int,int);
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15. int sock, listener, n, m, k, port=3425, bufPort;
  16. //Флаги параллельной обработки и ручного ввода порта
  17. bool defaultPort = true;
  18.  
  19. struct sockaddr_in addr;
  20. char buf[1024];
  21. int bytes_read;
  22.  
  23. //Ищем нужные параметры
  24. if (argc!=0) {
  25. for (int i=1;i<=argc;i++){
  26. if ((defaultPort) && (sscanf(argv[i],"%i",&bufPort)) == 1)
  27. { printf("Port: %i\n_______________\n", bufPort); port = bufPort; defaultPort = false; }
  28. }
  29. }
  30.  
  31. //Создание сокета для прослушки
  32. listener = socket(AF_INET, SOCK_STREAM, 0);
  33. if(listener < 0)
  34. {
  35. perror("socket");
  36. exit(1);
  37. }
  38.  
  39. //Заполнение адресной структуры
  40. addr.sin_family = AF_INET;
  41. addr.sin_port = htons(port);
  42. addr.sin_addr.s_addr = htonl(INADDR_ANY);
  43.  
  44. //Установка связи
  45. if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
  46. {
  47. perror("bind");
  48. exit(2);
  49. }
  50.  
  51. //Начало прослушки
  52. listen(listener, 1);
  53.  
  54. while(1)
  55. {
  56. //Прием сокета
  57. sock = accept(listener, NULL, NULL);
  58. if(sock < 0){
  59. perror("accept");
  60. exit(3);//stdlib.h
  61. }
  62.  
  63. //Случаи параллельной и обычной обработки
  64. while(1)
  65. {
  66. bytes_read = recv(sock, buf, 1024, 0);
  67. if(bytes_read <= 0) break;
  68. sscanf(buf,"%i %i", &n,&m);//stdio.h
  69. k=perform(n,m);
  70. sprintf(buf,"%i",k);
  71. send(sock, buf, bytes_read, 0);
  72. }
  73. close(sock);//unistd.h
  74. }
  75. close(listener);
  76.  
  77. return 0;
  78. }
  79.  
  80. int perform(int n,int m){
  81. int min=INT_MAX, max=INT_MIN;
  82. printf("Input: %i %i\n",n,m);
  83.  
  84. for(int i=n;i<=m;i++){
  85. if (sqrt(i)-(int)sqrt(i)==0){
  86. if (min<i) min=i;
  87. if (max>i) max=i;
  88. }
  89. }
  90. printf("Output: %i - %i = %i\n", max, min, max-min);
  91. return max-min;
  92. }
  93.  
  94. #include <sys/types.h>
  95. #include <sys/socket.h>
  96. #include <netinet/in.h>
  97. #include <unistd.h>
  98. #include <stdio.h>
  99. #include <stdlib.h>
  100.  
  101. int main(int argc,char* argv[])
  102. {
  103. char message[255];
  104. char buf[sizeof(message)];
  105.  
  106. int sock, port = 3425, n, m;
  107. //Принимаем порт через параметры командной строки (по-умолчанию 3425)
  108. if (argc!=0) sscanf(argv[1],"%i",&port);
  109.  
  110. //Создаем сокет и заполняем структуру для работы с ним
  111. struct sockaddr_in addr;
  112. sock = socket(AF_INET, SOCK_STREAM, 0);
  113. if(sock < 0)
  114. {
  115. perror("socket");
  116. exit(1);
  117. }
  118.  
  119. addr.sin_family = AF_INET;
  120. addr.sin_port = htons(port);
  121. addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
  122.  
  123. //Установка соединения с сервером через сокет
  124. if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
  125. {
  126. perror("connect");
  127. exit(2);
  128. }
  129.  
  130. //Запрос чисел у пользователя
  131. scanf("%i %i", &n,&m);
  132. sprintf(message,"%i %i",n,m);
  133.  
  134. //Отправка и получение данных
  135. send(sock, message, sizeof(message), 0);
  136. recv(sock, buf, sizeof(message), 0);
  137.  
  138. printf("%s\n",buf);
  139. close(sock);
  140.  
  141. return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement