上节已将服务器部分源码放出,本节列出客户端源码及结果
客户端即一个简单的带ui的dialog工程。主要向服务器发送登陆及获取信息的json格式代码。
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QTcpSocket>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
QTcpSocket *clientSocket;
public slots:
void readData();
private slots:
void on_pushButton_2_clicked();
void on_pushButton_clicked();
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QHostAddress>
#include <QDebug>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
clientSocket=new QTcpSocket;
connect(clientSocket,SIGNAL(readyRead()),this,SLOT(readData()));
clientSocket->connectToHost(QHostAddress::LocalHost,1992);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::readData()
{
ui->plainTextEdit->appendPlainText(clientSocket->readAll());
}
void Dialog::on_pushButton_2_clicked()//获取用户信息
{
QByteArray array("{ \"type\":\"getInfo\"}");
clientSocket->write(array);
qDebug()<< array;
}
void Dialog::on_pushButton_clicked()//登陆
{
QString a ;
a.append("{ \"type\":\"login\",");
a.append(QString("\"userName\":\"%1\",").arg(ui->lineEdit->text()));
a.append(QString("\"passWord\":\"%1\"}").arg(ui->lineEdit_2->text()));
QByteArray array=a.toLatin1();
clientSocket->write(array);
qDebug()<< array;
}
————————————————————————————————————————————————————————
在sqlite数据库中,存放了几个用户的用户名,密码,性别等简单数据。
执行结果:
左边是服务器,右边两个是客户端,接收到的数据,都在界面上显示出来。
第一个客户端用了正确的用户名与密码,登陆成功,并正确获取了用户信息,另一个用不存在的用户名登陆,所以失败,未登陆而获取用户信息,会提示。