Russian Qt Forum
Ноябрь 22, 2024, 04:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 23
1  Qt / Вопросы новичков / kerberos+ qt http server : Февраль 18, 2023, 14:16
Здравствуйте есть простой для начала http server в приложении
он отвечает на запрос get
в качестве клиента будет выступать браузер firefox ос astra linux(клиент и сервер могут быть на разных машинах)
есть вопрос а как прикрутить в kerberos аутентификацию к нему?
машины клиента и сервера будут в ald(freeipa) домене.
Я так понимаю что мне от браузера должен прийти билет керберос на мой сервер правильно?

2  Qt / Вопросы новичков / Вопрос по qsettings : Ноябрь 21, 2022, 16:36
Здравствуйте. Работаю с файлом настроек посредством  QSettings в linux. Сохраняю настройки  с помощью set value. Получаю настройки с помощью value. Вопрос почему когда я меняю содежимое файла настроек вручную (допустим) посредством mc и сохраняю
То получаю значение старое до редактирования с помощью value?
3  Программирование / Общий / Re: многопоточный сервер qudpsocket : Август 25, 2021, 19:14
на клиентской части сделал bind сокета 127.0.0.1 порт на выбор ос поставил 0
bind->(127.0.0.1,0)

также на клиенте не делаю теперь connecttohost
а просто в начале работы делаю writedatagram

до этого на клиенте я вообще не биндил адресс
а связь устанавливал с помощью connecttohost и тольок потом отправлял датаграму
в итоге сервак принимал но в отдельном потоке когда я создавал новый qudpsocket и пытался отправить клиенту на адрес и порт клиенту сообщение не приходило не испускался у него readyread
4  Программирование / Общий / Re: многопоточный сервер qudpsocket : Август 25, 2021, 17:58
Через новый udpsocket не получается передать. Клиенту ничего не приходит. Приходится делать setsocketdescriptor.
Клиент соединяется с сервером udp через connect to host
5  Программирование / Общий / многопоточный сервер qudpsocket : Август 22, 2021, 15:01
Здравствуйте решил написать многопоточный сервер на qudpsocket
для начала задача проста сервер принимает сообщение от клиента в основном потоке, потом запускает qrunable из пула потока и шлет ответное сообщение в таске
вот код
main.cpp
Код
C++ (Qt)
#include <QCoreApplication>
#include "udpserver.h"
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   udpserver serv;
  // serv.startserver();
   return a.exec();
}
 
 

udpserver.h
Код
C++ (Qt)
#ifndef UDPSERVER_H
#define UDPSERVER_H
 
#include <QObject>
#include "mytask.h"
#include <QUdpSocket>
#include <QThreadPool>
#include <QDebug>
class udpserver : public QObject
{
   Q_OBJECT
public:
   explicit udpserver(QObject *parent = 0);
   QUdpSocket *servsock=nullptr;
public slots:
   void startserver();
   void readyreadclient();
};
 
udpserver.cpp
Код
C++ (Qt)
#include "udpserver.h"
 
udpserver::udpserver(QObject *parent) : QObject(parent)
{
   servsock=new QUdpSocket();
   servsock->bind(QHostAddress("127.0.0.1"),43620,QUdpSocket::ReuseAddressHint);
   connect(servsock,SIGNAL(readyRead()),this,SLOT(readyreadclient()));
 
}
 
 
void udpserver::startserver()
{
 
}
 
void udpserver::readyreadclient()
{
   while (servsock->hasPendingDatagrams())
   {
       QByteArray sb;
       quint64 size=servsock->pendingDatagramSize();
       sb.resize(size);
       QHostAddress adrcli;
       quint16 portcli;
       servsock->readDatagram(sb.data(),size,&adrcli,&portcli);
       qDebug()<<sb;
 
       int desc=servsock->socketDescriptor();
       mytask *mt=new mytask(adrcli,portcli,desc);
 
       mt->setAutoDelete(true);
       QThreadPool::globalInstance()->start(mt);
   }
}
 
mytask.h

Код
C++ (Qt)
#ifndef MYTASK_H
#define MYTASK_H
 
#include <QObject>
#include <QRunnable>
#include <QHostAddress>
#include <QUdpSocket>
class mytask : public QObject, public QRunnable
{
   Q_OBJECT
public:
   explicit mytask(QHostAddress,quint16,int,QObject *parent = nullptr);
   ~mytask();
   QHostAddress adressclient;
   quint16 portcli;
   QUdpSocket *sockrab;
   int nativdesc;
 
signals:
 
public slots:
 
protected:
   void run();
};
 
#endif // MYTASK_H
 

mytask.cpp
Код
C++ (Qt)
#include "mytask.h"
 
mytask::mytask(QHostAddress adrcl,quint16 pt,int dsc,QObject *parent) : QObject(parent)
{
   adressclient=QHostAddress(adrcl);
   portcli=pt;
   nativdesc=dsc;
}
mytask::~mytask()
{
   if (sockrab)
   {
       sockrab->deleteLater();
   }
}
 
void mytask::run()
{
   sockrab=new QUdpSocket();
   sockrab->setSocketDescriptor(nativdesc);
   QByteArray sb="OT SERVER PRIVET";
   quint64 sz=sb.size();
   sockrab->writeDatagram(sb,sb.size(),adressclient,portcli);
 
}
 


С клиента я посылаю сообщение потом жду ответа от сервера а затем клиент завершает работу
Проблема заключается в том что когда выполняется
Код
C++ (Qt)
  if (sockrab)
   {
       sockrab->deleteLater();
   }
 
по логике это вроде правильно чтобы не было утечек
но со временем сервер просто перестает отвечать
Код
C++ (Qt)
QSocketNotifier: Invalid socket 6 and type 'Read', disabling...
 
в случае если этот блок кода убрать то сервер работает нормально
как можно решить данную проблему? qt 4.8
6  Программирование / Общий / Re: Qudpsocket сигнал error не испускается : Август 19, 2021, 18:30
А как на стороне сервера отследить то что клиент больше не активен?
7  Программирование / Общий / Re: Qudpsocket сигнал error не испускается : Август 17, 2021, 13:46
Отправить датаграмму подождать какое то время секунды 2-3 если ответа нет то сервер не доступен вот так примерно да?
8  Программирование / Общий / Qudpsocket сигнал error не испускается : Август 17, 2021, 13:09
Здравствуйте делаю клиент серверное приложение с помощью qudpsocket. Вроде все получается но я заметил такую странность что когда сервер не запущен. А клиент подключается с помощью connecttohost, не испускается сигнал error и таким образом я не могу понять запущен сервер или нет. Что можно сделать в этом случае?
9  Программирование / С/C++ / Re: Преобразование char * в uint8_t* : Январь 14, 2021, 20:23
Огромное вам спасибо
10  Программирование / С/C++ / Re: Преобразование char * в uint8_t* : Январь 13, 2021, 09:11
https://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
внутри см. openssl-1.0.1u/engines/ccgost/gost89.*

Если не сложно вам приведите пожалуйста пример как шифровать и расшифровать qbytearray в режиме ecb(простой замены), а то просто там не сказано как пользоваться.


11  Программирование / С/C++ / Re: Преобразование char * в uint8_t* : Январь 12, 2021, 21:06
я использовал "штатную" реализацию (gost89.h и gost89.c) из состава openssl-1.0.1u.tar.gz, а не эту заброшенную поделку

Код:
#include "gost89.h"
QByteArray gostEncodeCfb(const QByteArray &msg)
{
    static const unsigned char iv[16] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    QByteArray data64(msg);
    while (data64.size() % 8) data64.append((char)0);
    QByteArray data64Enc(data64.size(), 0);
    gost_enc_cfb(&ctx, iv, (const unsigned char*)data64.constData(), (unsigned char*)data64Enc.data(), data64.size() / 8);
    return data64Enc;
}
Если не сложно можете дать исходник?
12  Программирование / С/C++ / Преобразование char * в uint8_t* : Январь 12, 2021, 16:08
Добрый день собираюсь использовать библиотек шифрования/ расшифрования по ГОСТ
https://github.com/faddistr/GOST28147
Вся проблема в том что данные Я храню в массиве
char mas[] или qbytearray. А функция шифрования/расшифрования GOST_Encrypt_SR требует тип
uint8_ t*.Следовательно как мне грамотно произвести преобразование из char * в uint8_t* ?
13  Qt / Работа с сетью / Re: Удаление QtcpSocket без закрытия дескриптора(соединения) : Декабрь 16, 2020, 20:52
получается я так понял что в наследнике qrunnable обязательно нужно использовать waitforbytewritten после write
14  Qt / Работа с сетью / Re: Удаление QtcpSocket без закрытия дескриптора(соединения) : Декабрь 12, 2020, 17:49
Я использую сокт в таске (наследник qrunnable) передав туда socketdescriptor и создав там QtcpSocket и вызвав setsocketdeskriptor
когда я вызываю sock->write() данные у клиента не поступают, но когда делаю после вызова write   sock->waitforbyteswritte() данные приходят клиенту и он ловит у себя сигнал readyread.

ps с waitforbyteswritte() передается после этого думаю потому что если его не указывать то объект runnable уничтожается раньше наверно чем сокет реально передает в буфер ос
15  Qt / Работа с сетью / Re: Удаление QtcpSocket без закрытия дескриптора(соединения) : Декабрь 10, 2020, 17:01
В смысле, надо создать соединение в одном треде, а использовать в другом?
совершенно верно
после использования в другом треде нужно удалить объект QTcpSocket(сделать deletelater) который был создан в другом треде(setsocketdescriptor), но соединение не закрывать
Страниц: [1] 2 3 ... 23

Страница сгенерирована за 0.321 секунд. Запросов: 23.