Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2015, 15:48   #1
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
Вопрос tcp send() segmentation fault

Здравствуйте.

Есть клиент и сервер. Когда запущены сразу и клиент, и сервер, то всё работает нормально. Но если запущено что-то одно, например только клиент(хотя и с сервером такая же фигня), то при попытке отправить данные на сервер с помощью send - происходит segmentation fault. Мне не понятно, разве так и должно быть? Не понимаю как это исправить. Нужно чтобы при отсутствии клиента или сервера send отправлял бы данные отсутствующему клиенту/серверу, без аварийного завершения приложения. Подскажите пожалуйста, как это можно исправить?

Клиент и сервер у меня на локалхосте.
gunsoy вне форума Ответить с цитированием
Старый 24.10.2015, 18:45   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Ща допью кофе и на гуще гляну... код - в студию!

Скорее всего у вас не проходит connect и где-то получается нулевой указатель.
Запустите программу под отладчиком, тогда сразу будет видно где ломается.
waleri вне форума Ответить с цитированием
Старый 24.10.2015, 19:01   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Ща допью кофе и на гуще гляну... код - в студию!
О! И мне кофейку плиз )))
И тоже кода в студию две ст. ложки
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.01.2016, 15:11   #4
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
По умолчанию

Были другие проблемы, решил их, теперь вернулся к старой проблеме.

Вот код с std::cout-ами
Код:
void TCPProv::Prov()
{
    std::cout << "\n\n\nTCPProv_____start";
    for(int i = 0; i < usq.size(); i++)
    {
        std::cout << "\nTCPProv_____i " << i;
        if(!usq[i].que.empty())
        {
            std::cout << "\nTCPProv_____empty uoff.size " << uoff.size();
            bool BoolOff = true;
            for(int e = 0; e < uoff.size(); e++)
            {
                std::cout << "\nTCPProv_____uoff i " << e
                << " uoff[e] " << uoff[e] << " usq[i].ustcpq " << usq[i].ustcpq;
                if(uoff[e] == usq[i].ustcpq)
                {
                    std::cout << "\nTCPProv_____==";
                    usq[i].que.pop();
                    BoolOff = false;
                    break;
                }
            }
            if(BoolOff)
            {
                std::cout << "\nTCPProv_____BoolOff_____true";
                DataQueue & dq = usq[i].que.front();
                struct timeval tim;
                gettimeofday(&tim, NULL);
                if((dq.last_time + 1) <= tim.tv_sec)
                {
                    std::string strsend = dq.mes + dq.mes_key;
                    std::cout << "\nTCPProv_____usq[i].ustcpq " << usq[i].ustcpq
                    << " strsend " << strsend;
                    std::cout << "\nTCPProv_____end";
                    int resultSend = send(usq[i].ustcpq, (unsigned char *) strsend.c_str(), strsend.length(), 0);
                    dq.last_time = tim.tv_sec;
                }
            }
        }
    }
}
Вот вывод std::cout-ов http://ipic.su/img/img7/fs/tcp.1451822096.png

Запустил я сервер под отладчиком и две клиентские программы. У первой usq[i].ustcpq - 5, у второй usq[i].ustcpq - 8. Сервер и клиентские программы работают нормально. Закрываю клиентскую программу с usq[i].ustcpq - 8. Сервер отправляет данные обоим клиентам, но при отправке данных клиенту который отсутствует происходит Segmentation fault

Вот отладчик http://ipic.su/img/img7/fs/debugger.1451822764.png

Сам я не могу понять в чем причина вылетов.
gunsoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ vector segmentation fault Misa Помощь студентам 4 08.01.2015 19:02
Segmentation fault (core dumped) gunsoy Общие вопросы C/C++ 4 17.02.2014 11:07
Segmentation fault Hemul Общие вопросы C/C++ 7 16.08.2011 03:23
QT4 segmentation fault jojahti Qt и кроссплатформенное программирование С/С++ 6 06.01.2010 09:57
GCL и segmentation fault. jojahti Свободное общение 0 14.09.2009 19:20