crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Завершение соединения между клиентом и сервером
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
azure Дата 9.2.2010, 16:03
 
Цитата(pawok11 @ 5.2.2010, 16:24) *
Как сделать так чтобы этот процесс сразу же пропадал после завершения потока QThread?


Главный вопрос: зачем?
Это делает операционная система с целью снижения нагрузки на стек tcp/ip (для облегчения установления новых соединений). Держится соединене в таком состоянии 2 минуты по умолчанию.
pawok11 Дата 8.2.2010, 11:52
 
Цитата
Скорее всего не 1.5 минуты, а 2 (еще точнее 2MSL).
Все нормально, так и должно быть. Подробности кроются в работе TCP-стеке.
И уменьшать это время не стоит, т.к. могут начаться глюки с новыми сетевыми соединениями.


подсказал BRE :)
kwisp Дата 7.2.2010, 13:21
  pawok11,
есть подобня проблема уже давно и у меня.
походу это не винда и не qt это стандарт TCP/IP
называется "залипание" или как то так. по-моему около 2 минут. все как ты и говоришь.

П.С.
соответственно мы решения не нашли.
pawok11 Дата 5.2.2010, 17:24
  Запущен QTcpServer. На каждое входящее сообщение запускается свой поток обработки QThread, в котором вызывается QTcpSocket. После окончания обмена данными QTcpSocket закрывается
tcpSocket->disconnectFromHost();
tcpSocket->close();

и поток закрывается, связанный сигналом
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));

Слот срабатывает, все отрабатывается.
Теперь если под виндой запустить netstat -a -o получаю вот такое
Имя Локальный адрес Внешний адрес Состояние PID
...
TCP comp:6090 comp:6510 TIME_WAIT 0

и соединение будет еще висеть где-то 1,5 мин.

Сервер работает с разными клиентами и при обмене с каждым по несколько раз в секунду, такого рода процессы накапливаются и висят, пока не отваливаются где-то через 1.5 минуты.

Как сделать так чтобы этот процесс сразу же пропадал после завершения потока QThread?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 16.4.2024, 7:20