Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Браузерный чат


Автор: vaddas 18.4.2008, 23:47
Демон чата написан на С++, работает в роле веб сервера (фрейм чата где выводятся все исходящие сообщения), отправление сообщений выполняется добавлением в mysql исходящего сообщения (демон каждую секунду считывает таблицу и выводит сообщение)

Проблемма в том, при не правильном выходе из чата, т.е. просто закрыли вкладку соединение переходит в CLOSE_WAIT, как бы на СИ написать   чтоб соединение было закрыто принудительно при этом состоянии...


  smile 

ОС: Linux

Автор: vaddas 20.4.2008, 21:04
Неужели никто не знает? :(

Код

                                if (FD_ISSET(currentC->get_socket_id(), &write_list) ) {
                                        /* writing content to a client*/
                                        currentC->set_active(1);
                                        if (currentC->get_status() == ONLINE)
                                                currentC->process_messages(messages, total_messages, new_messages, firstU, lastU, firstR, lastR);
                                        if (currentC->send() == -1) {
                                                /*remove client then*/
                                                remove_client(currentC, firstC, lastC,"cannot send data to the socket");                                                
                                                continue;
                                        }
                                } else
                                        currentC->set_active(0);


т.е. как я понял сдесь отправка все равно происходит в сокет (т.е. даже когда соединение находится в пассивном закртыие close_wait), как этого избежать?  smile 

Автор: vaddas 3.5.2008, 03:23
форум мертв (точка)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)