1.實(shí)現(xiàn)
QTcpSocket實(shí)例首先是通過connectToHost()嘗試連接到服務(wù)器,需要指定服務(wù)器的IP地址和端口。connectToHost()是異步方式連接服務(wù)器,不會阻塞程序運(yùn)行,連接后發(fā)射connected()信號。
如果需要使用阻塞方式連接服務(wù)器,則使用waitForConnected()函數(shù)阻塞程序運(yùn)行,直到連接成功或失敗。
與服務(wù)器建立連接后,就可以向緩沖區(qū)寫數(shù)據(jù)或從接收緩沖區(qū)讀取數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的通信。當(dāng)緩沖區(qū)有新數(shù)據(jù)進(jìn)入時(shí),會發(fā)射readyRead()信號,一般在此信號的槽函數(shù)里讀取緩沖區(qū)數(shù)據(jù)。
2.示例
學(xué)習(xí)Qt開發(fā)不知道做什么?UP主為大家整理的這些領(lǐng)域都涉及到Qt開發(fā):嵌入式領(lǐng)域、桌面端開發(fā)、移動端、微控制器MCU、客戶端(游戲、直播等等)、汽車領(lǐng)域行業(yè)、 消費(fèi)類電子設(shè)備、醫(yī)療領(lǐng)域行業(yè)、工業(yè)自動化領(lǐng)域等等
Qt框架,GUI應(yīng)用程序,跨平臺開發(fā),信號與槽機(jī)制,QML語言,模型視圖編程,多線程編程,數(shù)據(jù)庫編程,網(wǎng)絡(luò)編程,XML解析,JSON解析,圖形圖像處理,用戶界面設(shè)計(jì),動畫效果,OpenGL,WebKit,嵌入式開發(fā),客戶端/服務(wù)器應(yīng)用程序.自定義控件
Qt框架,GUI應(yīng)用程序,跨平臺開發(fā),信號與槽機(jī)制,QML語言,模型視圖編程,多線程編程,數(shù)據(jù)庫編程,網(wǎng)絡(luò)編程,XML解析,JSON解析,圖形圖像處理,用戶界面設(shè)計(jì),動畫效果,OpenGL,WebKit,嵌入式開發(fā),客戶端/服務(wù)器應(yīng)用程序.自定義控件QT6,C++語言基礎(chǔ),qt基礎(chǔ)編程,qt軟件開發(fā),Qt架構(gòu)設(shè)計(jì),qt布局管理器,qt嵌入式開發(fā),qt編程入門,qt數(shù)據(jù)庫編程,qt跨平臺框架,QT項(xiàng)目實(shí)戰(zhàn),Quick模塊,OpenCV,Qt實(shí)戰(zhàn),OpenCV教程,QT界面開發(fā),Qt框架,C++數(shù)據(jù)結(jié)構(gòu),Qt線程,桌面應(yīng)用開發(fā),qt桌面應(yīng)用開發(fā),Socket網(wǎng)絡(luò)編程,qt開發(fā)工程師,qt開發(fā),應(yīng)用程序開發(fā)框架,圖形視圖框架,數(shù)據(jù)庫編程,Qt開發(fā)編程,Qt開發(fā)控件,Qt開發(fā)工程師,QT開發(fā)必備技能棧,qt編碼,qt網(wǎng)絡(luò)編程,qt網(wǎng)絡(luò)通信,Qt信號,Qt槽機(jī)制,qt字符串,qt數(shù)據(jù)類型,qt容器,qt客戶端開發(fā),qt軟件工程師,qt頁面繪制
本文福利,莬費(fèi)領(lǐng)取Qt開發(fā)學(xué)習(xí)資料包、技術(shù)視頻,內(nèi)容包括(C++語言基礎(chǔ),Qt編程入門,QT信號與槽機(jī)制,QT界面開發(fā)-圖像繪制,QT網(wǎng)絡(luò),QT數(shù)據(jù)庫編程,QT項(xiàng)目實(shí)戰(zhàn),QT嵌入式開發(fā),Quick模塊等等)↓↓↓↓↓↓見下面↓↓文章底部點(diǎn)擊莬費(fèi)領(lǐng)取↓↓
#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);
~Widget();
private slots:
void on_btnSend_clicked();
void on_btnClear_clicked();
void on_btnDisConnect_clicked();
void on_btnConnect_clicked();
void onConnected();
void onDisConnected();
void onStateChanged(QAbstractSocket::SocketState);
void onReadyRead();
private:
Ui::Widget *ui;
QTcpSocket *m_tcpSocket = nullptr;
};
#endif // WIDGET_H
學(xué)習(xí)Qt開發(fā)不知道做什么?UP主為大家整理的這些領(lǐng)域都涉及到Qt開發(fā):嵌入式領(lǐng)域、桌面端開發(fā)、移動端、微控制器MCU、客戶端(游戲、直播等等)、汽車領(lǐng)域行業(yè)、 消費(fèi)類電子設(shè)備、醫(yī)療領(lǐng)域行業(yè)、工業(yè)自動化領(lǐng)域等等
Qt框架,GUI應(yīng)用程序,跨平臺開發(fā),信號與槽機(jī)制,QML語言,模型視圖編程,多線程編程,數(shù)據(jù)庫編程,網(wǎng)絡(luò)編程,XML解析,JSON解析,圖形圖像處理,用戶界面設(shè)計(jì),動畫效果,OpenGL,WebKit,嵌入式開發(fā),客戶端/服務(wù)器應(yīng)用程序.自定義控件
Qt框架,GUI應(yīng)用程序,跨平臺開發(fā),信號與槽機(jī)制,QML語言,模型視圖編程,多線程編程,數(shù)據(jù)庫編程,網(wǎng)絡(luò)編程,XML解析,JSON解析,圖形圖像處理,用戶界面設(shè)計(jì),動畫效果,OpenGL,WebKit,嵌入式開發(fā),客戶端/服務(wù)器應(yīng)用程序.自定義控件QT6,C++語言基礎(chǔ),qt基礎(chǔ)編程,qt軟件開發(fā),Qt架構(gòu)設(shè)計(jì),qt布局管理器,qt嵌入式開發(fā),qt編程入門,qt數(shù)據(jù)庫編程,qt跨平臺框架,QT項(xiàng)目實(shí)戰(zhàn),Quick模塊,OpenCV,Qt實(shí)戰(zhàn),OpenCV教程,QT界面開發(fā),Qt框架,C++數(shù)據(jù)結(jié)構(gòu),Qt線程,桌面應(yīng)用開發(fā),qt桌面應(yīng)用開發(fā),Socket網(wǎng)絡(luò)編程,qt開發(fā)工程師,qt開發(fā),應(yīng)用程序開發(fā)框架,圖形視圖框架,數(shù)據(jù)庫編程,Qt開發(fā)編程,Qt開發(fā)控件,Qt開發(fā)工程師,QT開發(fā)必備技能棧,qt編碼,qt網(wǎng)絡(luò)編程,qt網(wǎng)絡(luò)通信,Qt信號,Qt槽機(jī)制,qt字符串,qt數(shù)據(jù)類型,qt容器,qt客戶端開發(fā),qt軟件工程師,qt頁面繪制
本文福利,莬費(fèi)領(lǐng)取Qt開發(fā)學(xué)習(xí)資料包、技術(shù)視頻,內(nèi)容包括(C++語言基礎(chǔ),Qt編程入門,QT信號與槽機(jī)制,QT界面開發(fā)-圖像繪制,QT網(wǎng)絡(luò),QT數(shù)據(jù)庫編程,QT項(xiàng)目實(shí)戰(zhàn),QT嵌入式開發(fā),Quick模塊等等)↓↓↓↓↓↓見下面↓↓文章底部點(diǎn)擊莬費(fèi)領(lǐng)取↓↓
#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
m_tcpSocket = new QTcpSocket(this);
connect(m_tcpSocket,&QTcpSocket::connected,this,&Widget::onConnected);
connect(m_tcpSocket,&QTcpSocket::disconnected,this,&Widget::onDisConnected);
connect(m_tcpSocket,&QTcpSocket::stateChanged,this,&Widget::onStateChanged);
connect(m_tcpSocket,&QTcpSocket::readyRead,this,&Widget::onReadyRead);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btnSend_clicked()
{
QString msg =ui->leMsg->text();
ui->plainTextEdit->appendPlainText("[out]"+msg);
QByteArray str = msg.toUtf8();
str.append('\n');
m_tcpSocket->write(str);
}
void Widget::on_btnClear_clicked()
{
ui->plainTextEdit->clear();
}
void Widget::on_btnDisConnect_clicked()
{
if(m_tcpSocket->state() == QAbstractSocket::ConnectedState)
{
m_tcpSocket->disconnectFromHost();
}
}
void Widget::on_btnConnect_clicked()
{
QString addr = ui->leAddr->text();
qint16 port = ui->lePort->text().toInt();
m_tcpSocket->connectToHost(addr,port);
ui->btnConnect->setEnabled(false);
ui->btnDisConnect->setEnabled(true);
}
void Widget::onConnected()
{
ui->plainTextEdit->appendPlainText("**已連接到服務(wù)器");
ui->plainTextEdit->appendPlainText("**peer address: "+
m_tcpSocket->peerAddress().toString());
ui->plainTextEdit->appendPlainText("**peer port: "+
QString::number(m_tcpSocket->peerPort()));
}
void Widget::onDisConnected()
{
ui->plainTextEdit->appendPlainText("**已斷開服務(wù)器");
ui->btnConnect->setEnabled(true);
ui->btnDisConnect->setEnabled(false);
}
void Widget::onStateChanged(QAbstractSocket::SocketState)
{
}
void Widget::onReadyRead()
{
while(m_tcpSocket->canReadLine())
{
ui->plainTextEdit->appendPlainText("[in] "+m_tcpSocket->readLine());
}
}
學(xué)習(xí)Qt開發(fā)不知道做什么?UP主為大家整理的這些領(lǐng)域都涉及到Qt開發(fā):嵌入式領(lǐng)域、桌面端開發(fā)、移動端、微控制器MCU、客戶端(游戲、直播等等)、汽車領(lǐng)域行業(yè)、 消費(fèi)類電子設(shè)備、醫(yī)療領(lǐng)域行業(yè)、工業(yè)自動化領(lǐng)域等等
Qt框架,GUI應(yīng)用程序,跨平臺開發(fā),信號與槽機(jī)制,QML語言,模型視圖編程,多線程編程,數(shù)據(jù)庫編程,網(wǎng)絡(luò)編程,XML解析,JSON解析,圖形圖像處理,用戶界面設(shè)計(jì),動畫效果,OpenGL,WebKit,嵌入式開發(fā),客戶端/服務(wù)器應(yīng)用程序.自定義控件
Qt框架,GUI應(yīng)用程序,跨平臺開發(fā),信號與槽機(jī)制,QML語言,模型視圖編程,多線程編程,數(shù)據(jù)庫編程,網(wǎng)絡(luò)編程,XML解析,JSON解析,圖形圖像處理,用戶界面設(shè)計(jì),動畫效果,OpenGL,WebKit,嵌入式開發(fā),客戶端/服務(wù)器應(yīng)用程序.自定義控件QT6,C++語言基礎(chǔ),qt基礎(chǔ)編程,qt軟件開發(fā),Qt架構(gòu)設(shè)計(jì),qt布局管理器,qt嵌入式開發(fā),qt編程入門,qt數(shù)據(jù)庫編程,qt跨平臺框架,QT項(xiàng)目實(shí)戰(zhàn),Quick模塊,OpenCV,Qt實(shí)戰(zhàn),OpenCV教程,QT界面開發(fā),Qt框架,C++數(shù)據(jù)結(jié)構(gòu),Qt線程,桌面應(yīng)用開發(fā),qt桌面應(yīng)用開發(fā),Socket網(wǎng)絡(luò)編程,qt開發(fā)工程師,qt開發(fā),應(yīng)用程序開發(fā)框架,圖形視圖框架,數(shù)據(jù)庫編程,Qt開發(fā)編程,Qt開發(fā)控件,Qt開發(fā)工程師,QT開發(fā)必備技能棧,qt編碼,qt網(wǎng)絡(luò)編程,qt網(wǎng)絡(luò)通信,Qt信號,Qt槽機(jī)制,qt字符串,qt數(shù)據(jù)類型,qt容器,qt客戶端開發(fā),qt軟件工程師,qt頁面繪制
?本文福利,莬費(fèi)領(lǐng)取Qt開發(fā)學(xué)習(xí)資料包、技術(shù)視頻,內(nèi)容包括(C++語言基礎(chǔ),Qt編程入門,QT信號與槽機(jī)制,QT界面開發(fā)-圖像繪制,QT網(wǎng)絡(luò),QT數(shù)據(jù)庫編程,QT項(xiàng)目實(shí)戰(zhàn),QT嵌入式開發(fā),Quick模塊等等)↓↓↓↓↓↓見下面↓↓文章底部點(diǎn)擊莬費(fèi)領(lǐng)取↓↓文章來源:http://www.zghlxwxcb.cn/news/detail-707136.html
3.與服務(wù)器通信
文章來源地址http://www.zghlxwxcb.cn/news/detail-707136.html
?本文福利,莬費(fèi)領(lǐng)取Qt開發(fā)學(xué)習(xí)資料包、技術(shù)視頻,內(nèi)容包括(C++語言基礎(chǔ),Qt編程入門,QT信號與槽機(jī)制,QT界面開發(fā)-圖像繪制,QT網(wǎng)絡(luò),QT數(shù)據(jù)庫編程,QT項(xiàng)目實(shí)戰(zhàn),QT嵌入式開發(fā),Quick模塊等等)↓↓↓↓↓↓見下面↓↓文章底部點(diǎn)擊莬費(fèi)領(lǐng)取↓↓
到了這里,關(guān)于QT TCP客戶端實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!