crossplatform.ru

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

> QTcpServer не слушает порт, хотя говорит что слушает
niklep
  опции профиля:
сообщение 23.4.2011, 20:32
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 11.4.2011
Пользователь №: 2590

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток. Пишу службу под windows, которая должна, помимо других действий, создавать серверный сокет и слушать его на предмет соединений. С этим казалось бы проблем быть не должно. Однако, несмотря на то, что объект класса QTcpServer говорит мне, что он слушает порт, этого не происходит. Т.е. меня обманывают=)
Вот кусок кода:
tcpServer = new QTcpServer(this);
        if (!tcpServer->listen(QHostAddress::LocalHost, nPort))
        {
                qDebug() << "Unable to start Server: " << tcpServer->errorString();
                tcpServer->close();
                return;
        }
        connect(tcpServer, SIGNAL(newConnection()),
                this, SLOT(slotNewConnection()));
        qDebug() << tcpServer->isListening() << "TCPSocket listen on port" << nPort;

Так вот. Ошибки не происходит, сокет создается. Последняя строка с qDebug() говорит следующее:
true TCPSocket listen on port 6667

Тем временем netstat не видит открытого порта, nmap также, telnet также о_0
Что не так? Службе нужны какие-то привилегии для открытия порта? Так я ей уже указал под админом запускаться, без толку.
P.S. Данный код для создания сокета прекрасно работает в моем маленьком тестовом проекте, здесь не хочет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
MoPDoBoPoT
  опции профиля:
сообщение 24.4.2011, 21:30
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Отличие в том, что в первом случае объект ServerSocket создаётся на стеке и, при выходе из метода start(), будет сразу же уничтожен, а во втором случае - в куче, из-за чего продолжает "жить" после выхода из метода start().
Эта особенность относится к C++, а не к Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 13:56