国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

DAY4,Qt(事件處理機制的使用,Qt中實現(xiàn)服務(wù)器的原理)

這篇具有很好參考價值的文章主要介紹了DAY4,Qt(事件處理機制的使用,Qt中實現(xiàn)服務(wù)器的原理)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.Qt中實現(xiàn)服務(wù)器的原理;

---chatser.h---頭文件
#ifndef CHATSER_H
#define CHATSER_H

#include <QWidget>
#include <QTcpServer>  //服務(wù)器類
#include <QTcpSocket>  //套接字類
#include <QMessageBox>  //消息對話類
#include <QList>  //鏈表容器
#include <QDebug>  //信息調(diào)試類

QT_BEGIN_NAMESPACE
namespace Ui { class Chatser; }
QT_END_NAMESPACE

class Chatser : public QWidget
{
    Q_OBJECT

public:
    Chatser(QWidget *parent = nullptr);
    ~Chatser();

private slots:
    void on_start_btn_clicked();  //啟動服務(wù)器按鈕槽函數(shù)
    void newConnection_slot();  //處理cli連接信號槽
    void readyRead_slot();  //處理cli發(fā)送數(shù)據(jù)信號槽

private:
    Ui::Chatser *ui;

    QTcpServer *server;  //定義服務(wù)器指針
    QList<QTcpSocket*> socketList;  //定義客戶端容器
};
#endif // CHATSER_H
---chatser.cpp---函數(shù)實現(xiàn)文件
#include "chatser.h"
#include "ui_chatser.h"

Chatser::Chatser(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Chatser)
{
    ui->setupUi(this);

    server = new QTcpServer(this);  //給服務(wù)器指針實例化空間
}

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

//啟動服務(wù)器按鈕槽函數(shù)
void Chatser::on_start_btn_clicked()
{
    //獲取ui界面上的端口號
    quint16 port = ui->port_edit->text().toUInt();

    //將服務(wù)器設(shè)為監(jiān)聽狀態(tài)
    if(server->listen(QHostAddress::Any,port))
    {
        QMessageBox::information(this,"listen","服務(wù)器啟動成功");
    }else
    {
        QMessageBox::information(this,"listen","服務(wù)器啟動失敗");
    }

    //如果有客戶端發(fā)來連接請求,那么該服務(wù)器就會自動發(fā)射一個newConnection信號
    //將客戶端連接信號與對應(yīng)槽函數(shù)連接
    connect(server,&QTcpServer::newConnection,this,&Chatser::newConnection_slot);
}

//處理cli連接信號槽
void Chatser::newConnection_slot()
{
    qDebug()<<"有新客戶端連接";
    //獲取最新連接的客戶端套接字
    QTcpSocket *s = server->nextPendingConnection();

    //將套接字放入客戶端容器中
    socketList.push_back(s);

    //如果有客戶端向服務(wù)器發(fā)來數(shù)據(jù),那么該客戶端會自動發(fā)射一個readyRead信號
    //將客戶端發(fā)送數(shù)據(jù)信號與對應(yīng)槽函數(shù)連接
    connect(s,&QTcpSocket::readyRead,this,&Chatser::readyRead_slot);
}

//處理cli發(fā)送數(shù)據(jù)信號槽
void Chatser::readyRead_slot()
{
    //移除無效客戶端
    for(int i=0; i<socketList.count(); i++)
    {
        if(socketList.at(i)->state() == 0)  //state函數(shù)返回值為枚舉值,
        {                                   //0表示無效連接
            socketList.removeAt(i);
        }
    }

    //遍歷客戶端套接字,尋找哪個客戶端有數(shù)據(jù)待讀
    for(int i=0; i<socketList.count(); i++)
    {
        if(socketList.at(i)->bytesAvailable() != 0)
        {
            //讀取數(shù)據(jù)
            QByteArray msg = socketList.at(i)->readAll();

            //將數(shù)據(jù)展示到ui界面
            ui->msg_Widget->addItem(QString::fromLocal8Bit(msg));

            //將數(shù)據(jù)發(fā)送給所有的客戶端
            for(int j=0; j<socketList.count(); j++)
            {
                socketList.at(j)->write(msg);
            }
        }
    }

}










---main.cpp---測試文件
#include "chatser.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Chatser w;
    w.show();
    return a.exec();
}
結(jié)果展示---?

DAY4,Qt(事件處理機制的使用,Qt中實現(xiàn)服務(wù)器的原理),qt,qt,開發(fā)語言,c++,服務(wù)器

?文章來源地址http://www.zghlxwxcb.cn/news/detail-613703.html

2.今日思維導(dǎo)圖;

DAY4,Qt(事件處理機制的使用,Qt中實現(xiàn)服務(wù)器的原理),qt,qt,開發(fā)語言,c++,服務(wù)器

?

到了這里,關(guān)于DAY4,Qt(事件處理機制的使用,Qt中實現(xiàn)服務(wù)器的原理)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • QT DAY4

    QT DAY4

    做一個鬧鐘,并播報填寫內(nèi)容 ?widget.h 文件 ?widget.cpp文件 實現(xiàn)效果 ????????在沒有點擊啟動按鈕時,時間和信息都可以修改,點擊關(guān)閉按鈕無效。 ? ? ? ? ?信息和時間填寫完后,點擊啟動按鈕后,啟動按鈕被鎖定,時間框和信息框無法再修改內(nèi)容,只有關(guān)閉按鈕可以點

    2024年02月13日
    瀏覽(16)
  • Qt : day4

    Qt : day4

    1.思維導(dǎo)圖 ?2.服務(wù)器 ?3.時鐘 ?

    2024年02月15日
    瀏覽(16)
  • QT DAY4作業(yè)

    QT DAY4作業(yè)

    1. 頭代碼 源代碼 效果圖 2.思維導(dǎo)圖

    2024年02月02日
    瀏覽(16)
  • 嵌入式:QT Day4

    嵌入式:QT Day4

    源碼: widget.h widget.cpp main.cpp

    2024年02月14日
    瀏覽(25)
  • QT 作業(yè) day4 7/28

    QT 作業(yè) day4 7/28

    1.思維導(dǎo)圖 ? ? 2.手動完成服務(wù)器實現(xiàn) .h .cpp

    2024年02月15日
    瀏覽(17)
  • qt圖形化界面開發(fā)DAY4

    qt圖形化界面開發(fā)DAY4

    2024年01月23日
    瀏覽(27)
  • QT day4 (time/tcp/draw)

    QT day4 (time/tcp/draw)

    ?1、頭文件 2、main函數(shù) 3、功能函數(shù) 1、服務(wù)器 (頭文件) ?TCP功能函數(shù) 客戶端 (頭文件) 功能函數(shù) 效果圖 頭文件 功能函數(shù) 效果圖

    2024年02月09日
    瀏覽(17)
  • C++linux高并發(fā)服務(wù)器項目實踐 day4

    C++linux高并發(fā)服務(wù)器項目實踐 day4

    int access(const char * pathname ,int mode); int chmod(const char * filename,int mode); int chown(const char* path,uid_t owner,gid_t group); int truncate(const char* path,off_t length); #include unistd.h int access(const char *pathname, int mode); 作用:判斷某個文件是否有某個權(quán)限,或者判斷文件是否存在 參數(shù): pathname:判斷文件路

    2023年04月16日
    瀏覽(33)
  • Qt事件機制

    Qt事件機制

    概述 Qt程序是事件驅(qū)動的, 程序的每個動作都是由內(nèi)部某個事件所觸發(fā)。事件系統(tǒng)在Qt總扮演了十分重要的角色,其事件的生成與事件的派發(fā)對GUI 程序起到了核心的作用。Qt事件處理流程圖和時序圖大致如下, 下面對于整個事件循環(huán)系統(tǒng)進行詳細的講解。 1. 事件生成 Qt中事件主

    2024年02月15日
    瀏覽(16)
  • QT的事件機制

    QT的事件機制

    事件(event)是由系統(tǒng)或者 Qt 本身在不同的時刻發(fā)出的。當(dāng)用戶按下鼠標(biāo)、敲下鍵盤,或者是窗口需要重新繪制的時候,都會發(fā)出一個相應(yīng)的事件。一些事件是****用戶操作 做出響應(yīng)時發(fā)出 ,如鍵盤事件等;另一些事件則是由 系統(tǒng)自動發(fā)出 ,如計時器事件。 在前面我們也曾

    2024年01月20日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包