Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Зависает форма |
Автор: setjmp 17.8.2010, 12:32 | ||
Помогите плиз. При таком коде почему то форма зависает:
В чем может быть проблема? |
Автор: SABROG 17.8.2010, 12:59 |
recv блокирует работу приложения в ожидании данных. Если кусок отправляемых данных слишком мал, то ОС не торопится его отправлять в ожидании еще данных пока не заполнится буффер сокета. По истечении определенного таймаута или закрытии сокета данные таки должны отправится. Решение - отключить алгоритм нагла через TCP_NODELAY или закрывать сокет сразу после отправки сообщения. recv() блокирует также основной цикл событий Qt, поэтому форма не перерисовывается. В Qt есть свои, переносимые, классы для работы с сетью, зачем использовать виндовые, да еще и блокирующие сокеты не понятно. |