• Как поставить на хостинг свое серверное приложение?

    @rPman
    vps-ка это такая же машина что и у разработчика, может быть другая операционная система но принципиально ничем не отличается. Вот как ты будешь запускать свое приложение на соседней машине в твоей сети?

    Т.е. в самом дубовом варианте, как локально запускаешь свое приложение-сервер, так запускай и на сервере.

    А вот дальше начинаешь решать возникающие проблемы.... типа открыл ssh в нем запустил приложение? по закрытию ssh оно тоже закроется, ок, запускай через screen. Хочешь чтобы был автозапуск? настрой как службу (читать доки примеры по той ОС которая на vps-ке) и т.п.
    Ответ написан
  • Как принимать и разбирать по UDP QByteArray в структуру из битовых полей?

    IGHOR
    @IGHOR Куратор тега Qt
    Qt/C++ DEV/CTO
    Через
    reinterpret_cast<char*>(указатель на объект вашей структуры)
    получите указатель на массив в который можно записать данные из QByteArray.
    А саму структуру обернуть в код:
    #pragma pack(push, 1)
    структура
    #pragma pack(pop)
    Ответ написан
    7 комментариев
  • Как в QByteArray помещать и извлекать битовые поля без боли?

    pon79
    @pon79
    Программист Qt/C++
    Было бы хорошо увидеть в контексте какой ситуации Вам это нужно, так как от этого зависит способ извлечения.
    В самом простом случае:
    #include <QCoreApplication>
    #include <QDebug>
    
    struct Device {
        bool mainPower: 1;
        bool reservePower: 1;
        bool alarm: 1;
    };
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        Device dev1{ true, false, true };
    
        QByteArray arr;
        arr.append( (char*) &dev1 );
    
        // куда-то передали arr
    
        char c{ arr.at(0) };
        Device *pDev1 = reinterpret_cast<Device *>( &c );
    
        qDebug() << pDev1->mainPower;
        qDebug() << pDev1->reservePower;
        qDebug() << pDev1->alarm;
    
        return a.exec();
    }
    Ответ написан
    Комментировать
  • Как сделать "переопределение" функции в c++?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Твой вопрос можно решить таким способом.
    #include <iostream>
    #include <functional>
    
    class Enemy final
    {
    public:
    	std::function<void()> update = []() {};
    };
    
    int main( int argc, char* argv[] )
    {
    	Enemy enemy;
    	enemy.update = []() { std::cout << "Hello"; };
    
    	enemy.update();
    	return 0;
    }
    Ответ написан
    Комментировать
  • Как принимать и разбирать по UDP QByteArray в структуру из битовых полей?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Если гипотетически, ваша программа будет переноситься между разными компиляторами, процессорами, и архитектурами, вам придется учесть множество нюансов:

    1) простое копирование данных из пакета в структуру будет работать только в том случае, если на обеих машинах одинаковая архитектура процессора и один и тот же компилятор. В противном случае возможны нюансы с выравниванием полей в структуре (его надо отключить) и с порядком хранения байт (а тут уже начинаются проблемы)

    2) разные архитектуры процессоров хранят целые числа с разным порядком байт. Чтобы не возникало конфликтов, принято по сети передавать данные в сетевом порядке байт. Для перевода в него есть семейства функций hton[s|l]/ntoh[s|l] . Без них вы будете наблюдать жуткие глюки.

    Отсюда следует, что нельзя просто так (тм) копирнуть байты, пришедшие из сети куда-то там, нужно как минимум преобразовать их из сетевого порядка в хостовый (а при отсылке - из хостового в сетевой), и уже потом заталкивать в поля структуры (так что выравнивание можно и не отключать в таком случае).
    Ответ написан
    Комментировать