前言
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;
}