Qt Tcp通讯客户端

.h 代码:
#pragma once

#include <QWidget>
#include "ui_QtClientWidget.h"
#include <QTcpSocket>

class QtClientWidget : public QWidget
{
     
	Q_OBJECT

public:
	QtClientWidget(QWidget *parent = Q_NULLPTR);
	~QtClientWidget();

private slots:
	void slotConnect();
	void slotSend();
	void slotClose();

private:
	Ui::QtClientWidget ui;
	QTcpSocket *tcpSocket;
};
cpp 代码:
#include "QtClientWidget.h"

QtClientWidget::QtClientWidget(QWidget *parent)
	: QWidget(parent)
{
     
	ui.setupUi(this);
	tcpSocket = nullptr;
	tcpSocket = new QTcpSocket(this);
	setWindowTitle(QString::fromLocal8Bit("客户端"));

	connect(ui.pushButton_Send, &QPushButton::clicked, this, &QtClientWidget::slotSend);
	connect(ui.pushButton_Close, &QPushButton::clicked, this, &QtClientWidget::slotClose);
	connect(ui.pushButton_Connect, &QPushButton::clicked, this, &QtClientWidget::slotConnect);

	//如果成功和对方建立连接,通讯套接字会主动触发 &QTcpSocket::connected 信号 
	//如果对方主动断开连接, 通讯套接字会主动触发 &QTcpSocket::disconnected 信号
	connect(tcpSocket, &QTcpSocket::connected, [=]() {
     
		ui.textEdit_Read->setText(QString::fromLocal8Bit("成功和服务器建立连接"));
	});
	//如果收到发过来的数据,会触发 &QTcpSocket::readyRead 信号
	connect(tcpSocket, &QTcpSocket::readyRead, [=]() {
     
		//获取对方发送的内容
		QByteArray array = tcpSocket->readAll();
		ui.textEdit_Read->append(array);
	});
}

QtClientWidget::~QtClientWidget()
{
     
}
void QtClientWidget::slotConnect()
{
     
	//获取服务IP和端口
	QString IP = ui.lineEdit_IP->text();
	qint16 port = ui.lineEdit_Port->text().toInt();

	//主动和服务器建立连接
	tcpSocket->connectToHost(IP, port);
}
void QtClientWidget::slotSend()
{
     
	//获取编辑框的内容
	QString str = ui.textEdit_Write->toPlainText();
	//发送数据
	tcpSocket->write(str.toUtf8().data());
	//发送数据成功后,清楚数据
	ui.textEdit_Write->clear();
}
void QtClientWidget::slotClose()
{
     
	//主动和对方断开连接
	tcpSocket->disconnectFromHost();
	tcpSocket->close();
}

你可能感兴趣的:(Qt基础/高级,qt)