Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <limits.h>
- #include <string.h>
- int perform(int,int);
- int main(int argc, char *argv[])
- {
- int sock, listener, n, m, k, port=3425, bufPort;
- //Флаги параллельной обработки и ручного ввода порта
- bool defaultPort = true;
- struct sockaddr_in addr;
- char buf[1024];
- int bytes_read;
- //Ищем нужные параметры
- if (argc!=0) {
- for (int i=1;i<=argc;i++){
- if ((defaultPort) && (sscanf(argv[i],"%i",&bufPort)) == 1)
- { printf("Port: %i\n_______________\n", bufPort); port = bufPort; defaultPort = false; }
- }
- }
- //Создание сокета для прослушки
- listener = socket(AF_INET, SOCK_STREAM, 0);
- if(listener < 0)
- {
- perror("socket");
- exit(1);
- }
- //Заполнение адресной структуры
- addr.sin_family = AF_INET;
- addr.sin_port = htons(port);
- addr.sin_addr.s_addr = htonl(INADDR_ANY);
- //Установка связи
- if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
- {
- perror("bind");
- exit(2);
- }
- //Начало прослушки
- listen(listener, 1);
- while(1)
- {
- //Прием сокета
- sock = accept(listener, NULL, NULL);
- if(sock < 0){
- perror("accept");
- exit(3);//stdlib.h
- }
- //Случаи параллельной и обычной обработки
- while(1)
- {
- bytes_read = recv(sock, buf, 1024, 0);
- if(bytes_read <= 0) break;
- sscanf(buf,"%i %i", &n,&m);//stdio.h
- k=perform(n,m);
- sprintf(buf,"%i",k);
- send(sock, buf, bytes_read, 0);
- }
- close(sock);//unistd.h
- }
- close(listener);
- return 0;
- }
- int perform(int n,int m){
- int min=INT_MAX, max=INT_MIN;
- printf("Input: %i %i\n",n,m);
- for(int i=n;i<=m;i++){
- if (sqrt(i)-(int)sqrt(i)==0){
- if (min<i) min=i;
- if (max>i) max=i;
- }
- }
- printf("Output: %i - %i = %i\n", max, min, max-min);
- return max-min;
- }
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc,char* argv[])
- {
- char message[255];
- char buf[sizeof(message)];
- int sock, port = 3425, n, m;
- //Принимаем порт через параметры командной строки (по-умолчанию 3425)
- if (argc!=0) sscanf(argv[1],"%i",&port);
- //Создаем сокет и заполняем структуру для работы с ним
- struct sockaddr_in addr;
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if(sock < 0)
- {
- perror("socket");
- exit(1);
- }
- addr.sin_family = AF_INET;
- addr.sin_port = htons(port);
- addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- //Установка соединения с сервером через сокет
- if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
- {
- perror("connect");
- exit(2);
- }
- //Запрос чисел у пользователя
- scanf("%i %i", &n,&m);
- sprintf(message,"%i %i",n,m);
- //Отправка и получение данных
- send(sock, message, sizeof(message), 0);
- recv(sock, buf, sizeof(message), 0);
- printf("%s\n",buf);
- close(sock);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement