Russian Qt Forum

Qt => Работа с сетью => Тема начата: finny от Июль 27, 2011, 12:46



Название: Установка опций сокета в QTcpServer
Отправлено: finny от Июль 27, 2011, 12:46
Имеется реализация tcp-сервера при помощи класса QTcpServer. Есть необходимость для прослушивающего порта tcp-сокета установить опцию SO_REUSEADDR, чтобы в случае некорректного завершения программы, можно было поднять TCP-сервер на том же самом порту. При том, что в QUDPSocket есть флаг QUdpSocket::ReuseAddressHint, который позволяет многократно запускать UDP-сервер на одном и том же порту.
Вариант с порождением дескриптора сокета апишными функциями, а затем вставкой его в QTcpServer с помощью функции setSocketDescriptor, не прокатывает, потому как почему-то не подаётся сигнал newConnection().
Как можно для дексриптора сокета объекта класса QTcpServer установить опцию SO_REUSEADDR и при этом не потерять поддержку событийности?


Название: Re: Установка опций сокета в QTcpServer
Отправлено: Странник от Июль 27, 2011, 13:26
QTcpServer::socketDescriptor (http://doc.qt.nokia.com/latest/qtcpserver.html#socketDescriptor) пробовали использовать? сразу на него нативными функциями опции поставить.


Название: Re: Установка опций сокета в QTcpServer
Отправлено: finny от Июль 27, 2011, 13:49
Сразу после порождения объекта QTcpSocket дескриптор равен -1, посему смысла нет... А после listen() пробовал, но никаких плодов не дало.