Название: QTcpSocket свойство для авторизации. Отправлено: updaite от Сентябрь 02, 2014, 21:01 На стороне сервера есть ссылка на сокет клиента
Код: QTcpSocket *client Хочу сделать одно из свойств идентификатором авторизации, к примеру при авторизации клиента задаем свойству клиента true если нет false. Вопрос: Какое свойство вобрать наиболее подходящие? Что бы со стороны клиента это свойство нельзя было перевести в true, можно и числовое свойство 0 или 1. И вообще есть ли подходящие свойство для этого? Не хочу просто эти списки, перебор поиск и прочий гемр)) Название: Re: QTcpSocket свойство для авторизации. Отправлено: torwig от Сентябрь 02, 2014, 22:22 Вариант с применением списка/множества/массива аутентифицированных сокетов вам не подходит, вы говорите.
Можно тогда сокет делать членом класса/структуры Client (или другое название), где будет поле bool isRegistered, которое будете устанавливать в true, если авторизация прошла успешно. Соответственно на стороне сервера будут храниться не QTcpSocket, а Client, у которого есть разные свойства и можно будет писать код: Код: Client* client; Я не гуру программирования, может кто еще что посоветует. Название: Re: QTcpSocket свойство для авторизации. Отправлено: updaite от Сентябрь 02, 2014, 22:46 Спасибо, но нужно именно вот так.
Код: QTcpSocket *client Название: Re: QTcpSocket свойство для авторизации. Отправлено: Bepec от Сентябрь 02, 2014, 22:48 Не тормозим, делаем обёртку - класс над QTcpSocket. В котором уже указываем что надо.
Название: Re: QTcpSocket свойство для авторизации. Отправлено: updaite от Сентябрь 02, 2014, 22:56 Bepec, есть класс
Код: class MainWindow : public QMainWindow Как сделать обертку? и как использовать? Я в QT совсем чуть шарю)) Мне кажется это заморочка того не стоит, мне просто нужно всего одно свойство авторизован или нет, и за этого свойства не хочу программу перестраивать. Название: Re: QTcpSocket свойство для авторизации. Отправлено: Bepec от Сентябрь 02, 2014, 23:13 Ну давайте посмотрим архитектуру.
У нас есть сервер. У нас есть куча клиентов. Сервер всё равно хранит список клиентов. Почему бы нам не сделать вместо списка клиентов список структур Код: struct ClientData Далее работаем по стандартному, только у нас появляется свойства authorize. Если уже совсем заморочиться можно переопределить оператор доступа вроде "operator ->()" и будет то что вам надо. Ещё вариант - QTcpSocket вроде бы наследник QObject'a с весьма интересным методом "bool QObject::setProperty(const char * name, const QVariant & value)", который позволяет установить объекту пропертю(свойство) с любым содержимым и любым значением :) Название: Re: QTcpSocket свойство для авторизации. Отправлено: updaite от Сентябрь 02, 2014, 23:21 Спасибо, но
Списки всех клиентов хранятся в QList<QTcpSocket*> m_clients; В месте где произошёл сигнал получаю клиента от которого произошёл сигнал. QTcpSocket *client = qobject_cast<QTcpSocket*>(sender()); client-> Работа с этим клиентом. И m_clients много где обрабатывается например Код: while (!m_clients.isEmpty()) Мне не совсем понятно я как использовать структуру? Это получается нужно велосипеды делать для структуры, такие как у QList. Название: Re: QTcpSocket свойство для авторизации. Отправлено: updaite от Сентябрь 02, 2014, 23:56 Сделал так если аккаунт есть, присваиваем имя клиенту (Его логин) client->setPeerName("Name"); если нет, не чего не делаем отправляем мол клиент лузер)
Далие проверяем есть ли имя у клиента client->peerName(); если что то вернул то все ок. Для моей задачи этого вполне достаточно) Так и мониторить проще) Название: Re: QTcpSocket свойство для авторизации. Отправлено: Bepec от Сентябрь 03, 2014, 00:01 Хорошо что у вас всё хорошо :)
Не понимаете и ладно. :) Название: Re: QTcpSocket свойство для авторизации. Отправлено: updaite от Сентябрь 03, 2014, 00:04 Но хорошо было бы привести пример со структурой)) А то малоли чего еще приспичит содержать)
Не понимание в том как получить значение определенного массива структуры если QTcpSocket *client = qobject_cast<QTcpSocket*>(sender()); а если быть точнее значение bool authorize; при таком условии. Название: Re: QTcpSocket свойство для авторизации. Отправлено: Gregory_E от Март 03, 2018, 17:52 Смысл делать какую то авторизацию в простом не защищённом сокетном соединении, если любой может прочитать все байты переданные по нему.
|