Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

Клиент и сервер у меня на локалхосте.
gunsoy вне форума   Ответить с цитированием
Старый 24.10.2015, 19:45   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,512
Репутация: 1686
По умолчанию

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

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

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

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

Вот код с 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ vector segmentation fault Misa Помощь студентам 4 08.01.2015 20: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 10:57
GCL и segmentation fault. jojahti Свободное общение 0 14.09.2009 19:20


03:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru