分布式计算框架(三) 客户端模块

三、客户端模块

    3.1 客户端模块结构

    计算节点模块主要功能为数据管理、日志管理、配置管理、处理线程管理、进程通信管理、TCP通信管理,该模块由以下几个类组成。

类名

关系类

    关系

Mainwindow

login

聚合

Mainwindow

tcp_socket

聚合

Mainwindow

Setting

聚合 

MainWindow:交互类模块,负责数据的显示、处理

名称

类型

说明

get_information

方法

接收数据并处理

on_search_task_clicked

方法

查找计算任务

on_search_caculate_information_clicked

方法

获取计算节点信息

on_delete_task_clicked

方法

删除计算任务

on_commit_DLL_clicked

方法

上传动态链接库

on_commit_task_clicked

方法

上传计算任务文件

Login:登陆类,负责用户的登陆,

3.10  Login表

名称

类型

说明

on_login_P_clicked

方法

用户登陆

on_pushButton_clicke

方法

退出

Setting:配置模块,负责配置的读取、储存。

名称

类型

说明

Init 

方法

初始化配置类

Start

方法

开始读取配置

Tcp_Socket

Tcp连接类

负责数据的发送与传输

send_message

方法

发送数据

Receive

方法

接收数据

Pack_data

方法

数据反序列化

客户端模块类图

              

    3.2 基本原理

    3.2.1 login类

        以下是login使用。代码如下:

    login  *login1=new login();
    connect(socket,SIGNAL(reply_data(QStringList)),login1,SLOT(receive_data(QStringList)));
    connect(login1,SIGNAL(socket_senddata(QString,QString,QString)),socket,SLOT(send_data(QString,QString,QString)));
    connect(login1,SIGNAL(socket_setpassword(QString)),socket,SLOT(setpassword(QString)));
    connect(login1,SIGNAL(set_id_password(QString,QString)),this,SLOT(get_id_password(QString,QString)));
    login1->setModal(true);
    login1->setsocket(socket);
    int result=login1->exec();
    if(result!=1)
    {
        exit(0);
    }
    else
    {
    delete login1;
    this->show();
    showtime();
    timer=new QTimer(this);
    connect(timer,&QTimer::timeout,this,&MainWindow::showtime);
    timer->start(1000);
    update=new QTimer(this);
    connect(update,&QTimer::timeout,this,&MainWindow::update_data);
    update->start(10000);
    ui->task_widget->setColumnWidth(0,100);
    ui->task_widget->setColumnWidth(2,80);
    ui->task_widget->setColumnWidth(4,130);
    ui->task_widget->setColumnWidth(5,130);
    }

    登陆类将登陆信息转发给MainWindow类进行信息发送,根据返回结果进行判定。

  if(data[1]=="用户登陆")
   {

       if(data[2]=="登陆成功")
       {
            qDebug()<<data;
            this->accept();
       }
       else
       {
           QMessageBox::about(NULL, "登陆失败", "账号密码错误!");
       }
   }

3.2.2 MainWindow类    

    获取在线节点、任务之类功能就是发送查询内容至服务器,接收服务器返回的结果并显示在客户端中。在上传DLL中客户端必须检测是否有效否则拒绝上传,以下为代码:

void MainWindow::on_choice_DLL_clicked()
{
    QString filename;

    filename = QFileDialog::getOpenFileName(this,tr("选择DLL"),"",tr("DLL (*.dll)")); //选择路径
    if(filename.isEmpty())
    {
        return;
    }
    else
    {
        QLibrary lib(filename);
        if(!lib.load())
        {
            QMessageBox::information(this,tr("不是有效的DLL"),tr("不是有效的dll!"));
            return;
        }
        lib.unload();
        DllPath=filename;
        ui->DLL_lineEdit->setText(filename);
    }
}

3.2.3 客户端小结

    接收数据并显示在客户端中逻辑比较复杂,美化需要下功夫。。

    

   

猜你喜欢

转载自blog.csdn.net/d7185540/article/details/80563510