Qt tcp聊天demo
·
客户端
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTcpSocket>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QTcpSocket *m_pSoc;
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHostAddress>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->lineEdit_IP->setText("127.0.0.1");
ui->lineEdit_Port->setText("8080");
m_pSoc = new QTcpSocket(this);
//连接服务器
m_pSoc->connectToHost(QHostAddress(ui->lineEdit_IP->text()), ui->lineEdit_Port->text().toInt());
//接收数据
connect(m_pSoc, &QTcpSocket::readyRead, [=]{
QByteArray array = m_pSoc->readAll();
ui->textEdit_Record->append(array);
});
connect(ui->btnSend, &QPushButton::clicked, [=]{
QString msg = ui->textEdit_Msg->toPlainText();
m_pSoc->write(msg.toUtf8());
ui->textEdit_Record->append("我是客户端:" + msg);
ui->textEdit_Msg->clear();
});
}
MainWindow::~MainWindow()
{
delete ui;
}
服务端
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTcpServer>
#include <QTcpSocket>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QTcpServer *m_pServer; //监听
QTcpSocket *m_pSoc; //通信
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHostAddress>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->lineEdit_IP->setText("127.0.0.1");
ui->lineEdit_Port->setText("8080");
m_pServer = new QTcpServer(this);
//监听
m_pServer->listen(QHostAddress(ui->lineEdit_IP->text()), ui->lineEdit_Port->text().toUInt());
//检测是否有新的连接
connect(m_pServer, &QTcpServer::newConnection, [=]{
m_pSoc = m_pServer->nextPendingConnection();
ui->textEdit_Record->append("client connect....");
connect(m_pSoc, &QTcpSocket::readyRead,[=]{
QByteArray msg = m_pSoc->readAll();
ui->textEdit_Record->append(msg);
});
});
//给客户端发送消息
connect(ui->btnSend, &QPushButton::clicked, [=]{
QString msg = ui->textEdit_Msg->toPlainText();
m_pSoc->write(msg.toUtf8());
ui->textEdit_Record->append("我是服务端:" + msg);
ui->textEdit_Msg->clear();
});
}
MainWindow::~MainWindow()
{
delete ui;
}
界面


更多推荐



所有评论(0)