Qt小作品Online Chat(s/c)

前言

Qt学习有小段时间了,想做一点小东西。找了一些有意义的资料,参考了别人的code受益匪浅。写了特别简易onlinechat。

运行图

在这里插入图片描述

ClientCode

server.h

#ifndef SERVER_H
#define SERVER_H

#include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>

namespace Ui {
class server;
}

class server : public QWidget
{
    Q_OBJECT

public:
    QTcpServer *ser;
    QTcpSocket *cli;
    explicit server(QWidget *parent = 0);
    ~server();

private:
    Ui::server *ui;
};

#endif // SERVER_H

ServerCode

server.cpp

#include "server.h"
#include "ui_server.h"
#include "QTime"

server::server(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::server)
{
    ui->setupUi(this);
    ser=new QTcpServer();ser->listen(QHostAddress::Any,8888);
    connect(ser,&QTcpServer::newConnection,[=](){
        cli=ser->nextPendingConnection();
        QString iptm=cli->peerAddress().toString();
        qint16 portm=cli->peerPort();
        connect(ui->pushButton,&QPushButton::clicked,[=](){
           QString tem=ui->textEdit_2->toPlainText();
           if(tem.size()!=0)ui->textEdit->append(QTime::currentTime().tostring()+" [Server]:\n"+tem);
           ui->textEdit_2->clear();
           cli->write(tem.toUtf8().data());
        });
        connect(cli,&QTcpSocket::readyRead,[=](){
            QbyteArray tem=cli->readAll();
            ui->textEdit->append(QTime::currenttime().toString()+" [Client]:\n"+tem);
        });
    });
}

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

client.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTcpSocket>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    QTcpSocket *cli;
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

client.cpp

#include "widget.h"
#include "ui_widget.h"
#include "QhostAddress"
#include "QTime"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    cli=new QTcpSocket(this);
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        cli->connectToHost(QHostAddress(ui->lineEdit->text()),ui->lineEdit_2->text().toInt());
    });
    connect(cli,&QTcpSocket::readyRead,[=](){
        QByteArray mes=cli->readAll();
        ui->textEdit->append(&QTime::currentTime().toString()+" [server]:\r"+nes);
    });
    connect(ui->pushButton_2,&QPushButton::clicked,[=](int c){
        ui->textEdit_2->clear();
        cli->write(tem.toUtf8().data());
        ui->textEdit->append(qTime::currentTime().toString()+" [client]:\r"+tem);
    });

}

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

猜你喜欢

转载自blog.csdn.net/qq_36389986/article/details/112379058
今日推荐