Название: 2 раза установить дескриптор сокета Отправлено: Yegor от Июнь 30, 2011, 19:38 Здравствуйте!
У меня есть tcp-сервер (QTcpServer). К нему пытаются установить подключения другие сокеты. Я должен решать, каким сокетам можно подсоединиться, а каким нет. Критерий выбора - ip адрес. Я проверяю разрешон ли ip адрес, так: Код: MyTcpServer::incomingConnection ( int socketDescriptor ) То есть если адрес разрешен, то я закрываю временный сокет, и передаю этот же дескриптор своему custom сокету (MyCustomSocket). Можно ли так делать, использовать идин и тот же 'socketDescriptor' 2 раза, поочереди, в разных сокетах? Повторяю, что после первого использования 'socketDescriptor', я закрывю сокет. Ведь в assistant написано, что нельзя использовать одновременно 2 открытых сокета с одним и тем же . Название: Re: 2 раза установить дескриптор сокета Отправлено: LisandreL от Июнь 30, 2011, 19:47 Код Нэ? Название: Re: 2 раза установить дескриптор сокета Отправлено: Yegor от Июнь 30, 2011, 20:40 Нет, не пойдет. Потому что MyCustomSocket - не объект класса QTcpSocket, а его наследник.
Название: Re: 2 раза установить дескриптор сокета Отправлено: ddrtn от Июль 01, 2011, 06:20 Я так понимаю, что наследников от QTcpSocket у Вас много. и в зависимости от ИП их нужно выбирать. В этом случае вместо наследования от QTcpSocket лучше сделать несколько классов-обработчиков, которые будут просто содержать своим членом указатель на QTcpSocket. Наследование почти всегда может быть заменено агрегацией или композицией (вопрос в том, что удобней и красивее).
Код: MyTcpServer::incomingConnection ( int socketDescriptor ) |