Qt模块化笔记之network——写第一个Tcp程序(2)

上节已将服务器部分源码放出,本节列出客户端源码及结果

客户端即一个简单的带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数据库中,存放了几个用户的用户名,密码,性别等简单数据。

执行结果:


左边是服务器,右边两个是客户端,接收到的数据,都在界面上显示出来。

第一个客户端用了正确的用户名与密码,登陆成功,并正确获取了用户信息,另一个用不存在的用户名登陆,所以失败,未登陆而获取用户信息,会提示。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值