Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
#1

Ошибка сегментирования при компиляции - C++

18.12.2015, 00:29. Просмотров 300. Ответов 2
Метки нет (Все метки)

Когда компилирую через g++ компилируется, при запуске выдает ошибку сегментирования, а при компиляции через NetBeans IDE выдает две ошибки, на скринах показал.
Задача: Разработать две программы – сервер и клиент. Клиент отсылает серверу через
датаграммный сокет два числа L и U, введенные пользователем, где L – это нижняя
граница диапазона, U – верхняя граница диапазона. Сервер принимает значения границ
диапазона из почтового ящика, вычисляет сумму и произведение чисел от L до U и
выводит полученные значения на экран.

Код файла сервер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
 
int main(int argc, char *argv[])
{
    int sock, listener;
    struct sockaddr_in addr;
    char buf[256];
    int bytes_read;
    
    printf("creating socket...\n");
    listener = socket(AF_INET, SOCK_STREAM, 0);
    if(listener < 0)
    {
        perror("socket error");
        return EXIT_FAILURE;
    }
    int port = atoi(argv[1]);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    
    printf("binding socket...\n");
    if (bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("bind error");
        return EXIT_FAILURE;
    }
 
    printf("reading data from socket...\n");
    listen(listener, 1);
    while(1)
    {
        sock = accept(listener, NULL, NULL);
        if(sock < 0)
        {
            perror("accept error");
            return EXIT_FAILURE;
        }
 
        while(1)
        {
            bytes_read = recv(sock, buf, 256, 0);
            if (bytes_read <= 0) break;
            //
            int L=1, U=10;
            long double Sum=0, Proizv=1;
            int flag = 0;
            char l[256]="", u[256]="";
            for (int i = 0; i < 256; i++)
            {
                if (buf[i] == '$')
                {
                    flag = i + 1;
                }
                else
                {
                    if (0 == flag)
                    {
                         l[i] = buf[i];
                    }
                    else
                    {
                         u[i - flag] = buf[i];
                    }
                }
            }
            char *error1, *error2;
            L= strtol(l, &error1, 10);
            U= strtol(u, &error2, 10);  
            Sum=0; 
            Proizv=1;
            for (int i=L; i<=U; i++)
            {                   
                    Sum+= i;
                    Proizv*=i;
            }
            printf("\nВы задали диапазон: [%i;%i]. На диапазоне подсчитаны:\nСумма=%0.0Lf; Произведение=%0.0Lf;\n", L, U, Sum, Proizv);
            //
            send(sock, buf, bytes_read, 0);
            close(sock);
        }
    }
    
    return 0;
}
Код файла клиент
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
 
char message[256];
char buf[256];
 
int main(int argc, char *argv[])
{
    int sock;
    struct sockaddr_in addr;
 
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0)
    {
        perror("socket error");
        exit(1);
    }
    int port = atoi(argv[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 error");
        exit(2);
    }
    char a[127];
    printf("Введите нижнюю границу диапазона:\n");
    scanf("%s", a);
    strcat(message, a);
    printf("Введите верхнюю границу диапазона:\n");
    scanf("%s", a);
    strcat(message, "$");
    strcat(message, a);
    send(sock, message, sizeof(256), 0);
    
    printf(buf);
    close(sock);
 
    return 0;
}
вот еще скрины ошибок
Миниатюры
Ошибка сегментирования при компиляции   Ошибка сегментирования при компиляции   Ошибка сегментирования при компиляции  

Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2015, 00:29     Ошибка сегментирования при компиляции
Посмотрите здесь:

Ошибка сегментирования при выводе меню - C++ Linux
#include stdio.h #include stdlib.h typedef struct lib { int nomer; Номер читательского char last_name; фамилия ...

Ошибка сегментирования при чтении файла - C++ Linux
Доброго дня! Компилирую обычный .cpp: g++ main.cpp. &quot;Ошибка сегментирования&quot; возникает при чтении данных из файла. А именно при выборе...

Ошибка сегментирования при сравнивании файлов - C++ Linux
Задача выполеяется ,но невсегда. Выскакивает ошибка сегментирования! нудно задать два каталога и если в одном из них есть ещё один католог...

Ошибка сегментирования при доступе к переменным класса - C++
Имею: - CentOS - gcc 4.8 - Собственный класс - В этом классе есть объект = указатель на другой класс (назовем его log). - В...

Ошибка сегментирования (core dumped) при обработке файла большого размера - C++ Linux
Поблочно обрабытываю текстовый файл ~1,5 Гб, при достижении конца файла получаю: Ошибка сегментирования (core dumped). Использую...

Ошибка сегментирования - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;unistd.h&gt; #include &lt;fcntl.h&gt; #include &lt;string.h&gt; using...

Ошибка сегментирования - C++
Здравствуйте. Здесь представлена программа, единственное назначение которой промоделировать поведение другой более сложной программы. ...

Ошибка сегментирования - C++
Здравствуйте! Подскажите, пожалуйста, почему программа выводит &quot;Ошибка сегментирования&quot;. #include &lt;stdlib.h&gt; #include &lt;time.h&gt; int...

Ошибка сегментирования - C++
Написал я быдлокодик, вроде компилируется даже. Но при запуске под Linux'ом вылетает ошибка сегментирования, не могу понять откуда она. ...

Ошибка сегментирования - C++
Добрый день, возникла проблема: Вот программа, суть из исходного файла у слов удаляется окончание 's' (если оно присутствует), плюс даны...

Ошибка сегментирования. - C++
Всем доброго времени суток! Помогите пожалуйста разобраться в чем дело, пишу программу( суть найти путь в дереве, но думаю это не будет...

Ошибка сегментирования. g++ - C++ Linux
Здравствуйте. Захотелось написать решение матриц методом Гаусса. Однако я в этом не очень преуспел. #include &lt;iostream&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
18.12.2015, 09:11     Ошибка сегментирования при компиляции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Diman_ Посмотреть сообщение
а при компиляции через NetBeans IDE выдает две ошибки, на скринах показал.
Ты похоже оба файла в один проект загнал, комплятор говорит, что у тебя 2 main'а в коде.
Цитата Сообщение от Diman_ Посмотреть сообщение
при запуске выдает ошибку сегментирования
В клиенте и в сервере вот здесь падает
C++
1
int port = atoi(argv[1]);
ты ж при запуске порт не передаешь судя по скрину.
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
19.12.2015, 19:57  [ТС]     Ошибка сегментирования при компиляции #3
Спасибо, задал порт и все ок стало
Yandex
Объявления
19.12.2015, 19:57     Ошибка сегментирования при компиляции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru