카테고리 없음

댕팡 - 클라이언트 코드

joo_coding 2025. 5. 31. 20:10

클라이언트 2개 - [가게/고객]

 

현재 시뮬레이션 가능한 기능: 회원가입

 

< client1>

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "json.hpp"
#include <QTcpSocket>
#include <QMessageBox>
#include <QDateTime>
#include <QString>

using json = nlohmann::json;
using namespace std;
QString now = QDateTime::currentDateTime().toString("yyyy-MM-dd");

json sendAndReceive(QTcpSocket& socket, const json& request) {
    QByteArray data = QByteArray::fromStdString(request.dump());
    socket.write(data);
    socket.waitForBytesWritten();

    socket.waitForReadyRead();
    QByteArray responseData = socket.readAll();
    return json::parse(responseData.toStdString());
}


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)

{
    ui->setupUi(this);
    this->conncetsetting();

    socket.connectToHost("127.0.0.1", 9957);

}

void MainWindow :: uisetting(){

}

void MainWindow :: conncetsetting(){
    connect(ui->login_btn, &QPushButton::clicked , this , &MainWindow::login_btnclicked);
}

void MainWindow :: login_btnclicked(){

    // QString id = ui->id_line->text();

    json j;
    j["action"] = "signup";
    j["data"] = {
        {"USER_ID","HUB"},
        {"USER_NAME", "김유범"},
        {"USER_PW", "1234"},
        {"USER_PHONE", "010-1234-5678"},
        {"USER_ROLE", 1},
        {"USER_CREATE_DATE",now.toStdString()}
    };
    j["data"]["USER_ID"] = "GOD준영";
    // 5. 응답 JSON 파싱
    json response = sendAndReceive(socket,j);
    qDebug() << QString::fromStdString(response.dump(4));

    if(response["status"] == "success"){
        QMessageBox::information(this,"아아", "메롱");
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

// SecondUI.h

// signals:
// void openThirdUI();  // 사용자 정의 신호

// // SecondUI.cpp
// void SecondUI::on_someButton_clicked() {
//     emit openThirdUI(); // 신호 발생
// }

// mainwindow.h

// private:
// SecondUI *secondUI;
// ThirdUI *thirdUI;


// // MainWindow.cpp
// SecondUI *second = new SecondUI;
// ThirdUI *third = new ThirdUI;

// secondUI->show();
// connect(second, &SecondUI::openThirdUI, this, [=]() {
//     third->show();  // 메인윈도우가 ThirdUI를 열어줌
// });

 

 

< client2 >

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "json.hpp"
#include <QTcpSocket>
#include <QMessageBox>
#include <QDateTime>
#include <QString>

using json = nlohmann::json;
using namespace std;
QString now = QDateTime::currentDateTime().toString("yyyy-MM-dd");

json sendAndReceive(QTcpSocket& socket, const json& request) {
    QByteArray data = QByteArray::fromStdString(request.dump());
    socket.write(data);
    socket.waitForBytesWritten();

    socket.waitForReadyRead();
    QByteArray responseData = socket.readAll();
    return json::parse(responseData.toStdString());
}


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)

{
    ui->setupUi(this);
    this->conncetsetting();

    socket.connectToHost("127.0.0.1", 9957);

}

void MainWindow :: uisetting(){

}

void MainWindow :: conncetsetting(){
    connect(ui->login_btn, &QPushButton::clicked , this , &MainWindow::login_btnclicked);
}

void MainWindow :: login_btnclicked(){

    // QString id = ui->id_line->text();

    json j;
    j["action"] = "signup";
    j["data"] = {
        {"USER_ID","HUB"},
        {"USER_NAME", "김유범"},
        {"USER_PW", "1234"},
        {"USER_PHONE", "010-1234-5678"},
        {"USER_ROLE", 1},
        {"USER_CREATE_DATE",now.toStdString()}
    };
    j["data"]["USER_ID"] = "GOD준영";
    // 5. 응답 JSON 파싱
    json response = sendAndReceive(socket,j);
    qDebug() << QString::fromStdString(response.dump(4));

    if(response["status"] == "success"){
        QMessageBox::information(this,"아아", "메롱");
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

// SecondUI.h

// signals:
// void openThirdUI();  // 사용자 정의 신호

// // SecondUI.cpp
// void SecondUI::on_someButton_clicked() {
//     emit openThirdUI(); // 신호 발생
// }

// mainwindow.h

// private:
// SecondUI *secondUI;
// ThirdUI *thirdUI;


// // MainWindow.cpp
// SecondUI *second = new SecondUI;
// ThirdUI *third = new ThirdUI;

// secondUI->show();
// connect(second, &SecondUI::openThirdUI, this, [=]() {
//     third->show();  // 메인윈도우가 ThirdUI를 열어줌
// });