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

Qt 服務(wù)器 獲取發(fā)送客戶端的QTcpSocket對(duì)象 和 該socket的ip和端口號(hào)

這篇具有很好參考價(jià)值的文章主要介紹了Qt 服務(wù)器 獲取發(fā)送客戶端的QTcpSocket對(duì)象 和 該socket的ip和端口號(hào)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

遇到問題:

????????眾多客戶端發(fā)送過來(lái)請(qǐng)求數(shù)據(jù),如何找到該客戶端的 QTcpsocket對(duì)象給該對(duì)象回復(fù)消息?

解決辦法:

????????QTcpSocket *ptr =?? dynamic_cast<QTcpSocket *>(sender());

? ? ? ? 解釋:通過?dynamic_cast強(qiáng)行轉(zhuǎn)換。QTcpSocket *類型的對(duì)象、誰(shuí)發(fā)送了信號(hào)就會(huì)觸發(fā)

? ? ? ? ? ? ? ? ? ?sender()信號(hào)、獲取該信號(hào)的QTcpsocket *對(duì)象。

????????下面代碼可以獲取socket的port和ip

    //監(jiān)聽套接字
    tcpServer=new QTcpServer(this);

    //監(jiān)聽
    tcpServer->listen(QHostAddress::Any,8888);

    connect(tcpServer,&QTcpServer::newConnection,
            [=](){
                    //取出建立好連接的套接字
                    tcpSocket=tcpServer->nextPendingConnection();

                    //獲取對(duì)方的IP和端口
                    QString ip=tcpSocket->peerAddress().toString();
                    qint16 port =tcpSocket->peerPort();
                    QString ipDate=QString("[ip=%1 port=%2] 建立好連接了?。?).arg(ip).arg(port);

                    ui->textEdit->append(ipDate);
                    ui->buttonFile->setEnabled(true);
                }

            );

完整代碼如下

????????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-531534.html

#include "server_code.h"

Server_code::Server_code(QObject *parent)
{
    socket_num =0;
    listen(QHostAddress::Any,8888);
    connect_db();
    qDebug()<<"服務(wù)器端口號(hào)已經(jīng)開啟: 8888";
}

void Server_code::connect_db()
{
    //創(chuàng)建連接對(duì)象
    db = QSqlDatabase::addDatabase("QMYSQL");
    //連接參數(shù)

    db.setPort(3306);
//    db.setHostName("47.105.188.189");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("voice");
    db.setUserName("root");
    db.setPassword("123456");

    //如果連接成功
    if (db.open())
    {
        qDebug()<<"連接成功";

        //查詢  通過全局指針變量query指向連接成功的地址。
        query = new QSqlQuery();

    }
    else
    {
         qDebug()<<"連接失敗";

    }
}

void Server_code::incomingConnection(qintptr socketDescriptor)
/*產(chǎn)生鏈接的時(shí)候執(zhí)行這個(gè)     這個(gè)是產(chǎn)生socket的函數(shù)*/
{
    //生成tcpSocket對(duì)象
    socket = new QTcpSocket(this);



    //綁定這個(gè)鏈接來(lái)的兌現(xiàn)到socket中
    socket->setSocketDescriptor(socketDescriptor);


    only_socket.insert(socket_num,socket);

    //第一次連接發(fā)送 所有型號(hào)數(shù)據(jù)給客戶端
    model();

    //讀取他發(fā)來(lái)的消息、 使用receiveMessage去接收
    connect(socket,SIGNAL(readyRead()),this,SLOT(receiveMessage()));

    //傳遞數(shù)據(jù) 誰(shuí)上線了
//    emit giveMsg(socket->peerAddress().toString() + "上線",2);
    qDebug()<<socket->peerAddress().toString() + "上線";
    socket_num++;

}



void Server_code::receiveMessage()
{

    QTcpSocket* ptr  =dynamic_cast<QTcpSocket*>(sender());

    //讀取 字節(jié)流的方式  讀取客戶端發(fā)來(lái)的數(shù)據(jù)。
    QByteArray arr = ptr->readAll();
    QString str = arr.data();
    qDebug()<<str;
    //把信號(hào)傳遞出去  其中1代表客戶端機(jī)型、 后期要加用戶名和密碼在這里添加。
    emit giveMsg(str,1,ptr);

}

void Server_code::model()
{
    //連接的時(shí)候、顯示在客戶端的型號(hào)數(shù)據(jù)

    query->exec("select 型號(hào) from FRP_attr");
    QString model;
    while(query->next())
    {
         model = model + query->value(0).toString() + ",";
    };

    model = model + "型號(hào)";
    QByteArray send_model = model.toUtf8();
    socket->write(send_model);
}




//測(cè)試聲音系數(shù)
void Server_code::model_voice(QString one_model,QTcpSocket* ptr){

    query->exec("select 測(cè)試吸聲系數(shù) from 型號(hào)吸聲系數(shù)表 where 型號(hào) = '"+one_model+"' and 頻率 < 5001");
    QString test_voice;
    while(query->next())
    {
         test_voice = test_voice + query->value(0).toString() + ",";
    };

    test_voice = test_voice + "$$$";

//    qDebug()<<test_voice;

    QByteArray test_voice_lot = test_voice.toUtf8();
    ptr->write(test_voice_lot);
}


//測(cè)試物理/聲學(xué)系數(shù)
void Server_code::model_detail_data(QString one_model,QTcpSocket* ptr){

    query->exec("select * from frp_attr where 型號(hào) = '"+one_model+"'");
    QString model_info_data;
    while(query->next())
    {
         model_info_data = model_info_data + query->value(0).toString() + ",";
         model_info_data = model_info_data + query->value(1).toString() + ",";
         model_info_data = model_info_data + query->value(2).toString() + ",";
         model_info_data = model_info_data + query->value(3).toString() + ",";
         model_info_data = model_info_data + query->value(4).toString() + ",";
         model_info_data = model_info_data + query->value(5).toString() + ",";
         model_info_data = model_info_data + query->value(6).toString() + ",";
         model_info_data = model_info_data + query->value(7).toString() + ",";
         model_info_data = model_info_data + query->value(8).toString() + ",";
         model_info_data = model_info_data + query->value(9).toString() + ",";
         model_info_data = model_info_data + query->value(10).toString() + ",";
         model_info_data = model_info_data + query->value(11).toString() + "|";
    };
    model_info_data = model_info_data + "$$$";
    QByteArray model_info_data_lot = model_info_data.toUtf8();
    ptr->write(model_info_data_lot);
}

//理論系數(shù)
void Server_code::li_model_voice(QString one_model,QTcpSocket* ptr){

    query->exec("select `理論吸聲系數(shù)` from 型號(hào)吸聲系數(shù)表 where 型號(hào) = '"+one_model+"'and 頻率 < 5001");
    QString li_voice;
    while(query->next())
    {
         li_voice = li_voice + query->value(0).toString() + ",";
    };
//    li_voice = li_voice + "理論吸聲系數(shù)";
    QByteArray li_voice_lot = li_voice.toUtf8();
    ptr->write(li_voice_lot);
}


到了這里,關(guān)于Qt 服務(wù)器 獲取發(fā)送客戶端的QTcpSocket對(duì)象 和 該socket的ip和端口號(hào)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • TCP通信之QTcpServer和QTcpSocket,服務(wù)器和客戶端通訊

    TCP通信之QTcpServer和QTcpSocket,服務(wù)器和客戶端通訊

    TCP傳輸控制協(xié)議 是一個(gè)可靠的(相對(duì)于UDP),面向流,面向連接的運(yùn)輸協(xié)議。 Socket 俗稱“套接字”。就是對(duì)網(wǎng)絡(luò)中不同主機(jī)上的應(yīng)用進(jìn)程之間進(jìn)行雙向通信的端點(diǎn)的抽象。一個(gè)套接字就是網(wǎng)絡(luò)上進(jìn)程通信的一端,提供了應(yīng)用層進(jìn)程利用網(wǎng)絡(luò)協(xié)議交換數(shù)據(jù)的機(jī)制。從所處的地

    2024年02月12日
    瀏覽(32)
  • TCP的服務(wù)器和客戶端的通信

    TCP的服務(wù)器和客戶端的通信

    實(shí)現(xiàn)不同主機(jī)之間的進(jìn)程間通信(服務(wù)器和客戶端的通信),并且一個(gè)服務(wù)器可以處理很多個(gè)客戶端的請(qǐng)求。 協(xié)議:通信雙方所遵守的通信規(guī)則。 網(wǎng)絡(luò)體系結(jié)構(gòu):指網(wǎng)絡(luò)的層次結(jié)構(gòu)和每層所使用的協(xié)議的集合。 網(wǎng)絡(luò)采用分而治之的方法設(shè)計(jì),將網(wǎng)絡(luò)的功能劃分為不同的模塊

    2023年04月23日
    瀏覽(21)
  • TCP服務(wù)器和客戶端的創(chuàng)建步驟

    一、創(chuàng)建套接字(socket函數(shù)): 通信域選擇IPV4網(wǎng)絡(luò)協(xié)議、套接字類型選擇流式; 二、填充服務(wù)器的網(wǎng)絡(luò)信息結(jié)構(gòu)體: 1.定義網(wǎng)絡(luò)信息結(jié)構(gòu)體變量; 2.求出結(jié)構(gòu)體變量的內(nèi)存空間大??; 3.結(jié)構(gòu)體清零; 4.使用IPV4網(wǎng)絡(luò)協(xié)議; 5.預(yù)留給在終端輸入的網(wǎng)絡(luò)字節(jié)序的端口號(hào); 6.預(yù)留給

    2024年01月17日
    瀏覽(22)
  • UDP服務(wù)器和客戶端的創(chuàng)建步驟

    一、創(chuàng)建用戶數(shù)據(jù)報(bào)套接字(socket函數(shù)): 通信域選擇 IPV4網(wǎng)絡(luò)協(xié)議 、套接字類型選擇 數(shù)據(jù)報(bào)式 ; 二、填充服務(wù)器的網(wǎng)絡(luò)信息結(jié)構(gòu)體: 1.定義網(wǎng)絡(luò)信息結(jié)構(gòu)體變量; 2.求出結(jié)構(gòu)體變量的內(nèi)存空間大?。?3.結(jié)構(gòu)體清零; 4.使用IPV4網(wǎng)絡(luò)協(xié)議; 5.預(yù)留給在終端輸入的網(wǎng)絡(luò)字節(jié)序

    2024年01月19日
    瀏覽(14)
  • 【JavaEE初階】 TCP服務(wù)器與客戶端的搭建

    【JavaEE初階】 TCP服務(wù)器與客戶端的搭建

    TCP服務(wù)器與客戶端的搭建需要借助以下API TCP之間通信通過流進(jìn)行傳輸,無(wú)論是服務(wù)器還是客戶端:讀取內(nèi)容用輸入流,寫入內(nèi)容用輸出流 ServerSocket 是創(chuàng)建TCP服務(wù)端Socket的API。 ServerSocket 構(gòu)造方法 : 方法簽名 方法說明 ServerSocket(int port) 創(chuàng)建一個(gè)服務(wù)端流套接字Socket,并綁定

    2024年02月05日
    瀏覽(22)
  • nodejs 實(shí)現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互

    nodejs 實(shí)現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互

    公司和第三方合作開發(fā)一個(gè)傳感器項(xiàng)目,想要通過電腦或者手機(jī)去控制項(xiàng)目現(xiàn)場(chǎng)的傳感器控制情況?,F(xiàn)在的最大問題在于,現(xiàn)場(chǎng)的邊緣終端設(shè)備接入的公網(wǎng)方式是無(wú)線接入,無(wú)法獲取固定IP,所以常規(guī)的HTTP協(xié)議通信就沒法做,現(xiàn)在打算使用MQTT來(lái)實(shí)現(xiàn)云平臺(tái)和邊緣終端(傳感器

    2024年02月05日
    瀏覽(29)
  • 在Linux系統(tǒng)實(shí)現(xiàn)服務(wù)器端和客戶端的套接字通信

    在Linux系統(tǒng)實(shí)現(xiàn)服務(wù)器端和客戶端的套接字通信

    目錄 一.創(chuàng)建一個(gè)socket文件夾用來(lái)存放編寫的服務(wù)器端和客戶端程序 二.編寫服務(wù)器端代碼 三.編寫客戶端代碼 四.編譯c語(yǔ)言程序 五.斷開連接 六.可能涉及到的一些沒接觸過的知識(shí)點(diǎn) (我系統(tǒng)里的文件在temp/socket$文件夾中) ? 在server.c中編寫的代碼: 在client中編寫的代碼:

    2024年02月07日
    瀏覽(22)
  • 【Nginx筆記02】通過Nginx服務(wù)器轉(zhuǎn)發(fā)客戶端的WebSocket接口到后端服務(wù)

    【Nginx筆記02】通過Nginx服務(wù)器轉(zhuǎn)發(fā)客戶端的WebSocket接口到后端服務(wù)

    這篇文章,主要介紹如何通過Nginx服務(wù)器轉(zhuǎn)發(fā)客戶端的WebSocket接口到后端服務(wù)【知識(shí)星球】。 目錄 一、Nginx配置WebSocket 1.1、Nginx配置內(nèi)容 1.2、客戶端請(qǐng)求地址 1.3、創(chuàng)建WebSocket測(cè)試工程 1.4、啟動(dòng)測(cè)試 1.5、WebSocket超時(shí)問題 1.5.1、設(shè)置超時(shí)時(shí)間 1.5.2、建立心跳機(jī)制(推薦) 今天

    2024年04月11日
    瀏覽(23)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】網(wǎng)絡(luò)編程套接字&UDP服務(wù)器客戶端的簡(jiǎn)單模擬

    【計(jì)算機(jī)網(wǎng)絡(luò)】網(wǎng)絡(luò)編程套接字&UDP服務(wù)器客戶端的簡(jiǎn)單模擬

    需要云服務(wù)器等云產(chǎn)品來(lái)學(xué)習(xí)Linux的同學(xué)可以移步/–騰訊云–/官網(wǎng),輕量型云服務(wù)器低至112元/年,優(yōu)惠多多。(聯(lián)系我有折扣哦) 每臺(tái)主機(jī)都有自己的IP地址,當(dāng)數(shù)據(jù)在進(jìn)行通信的時(shí)候,除了要發(fā)送的數(shù)據(jù)外,在報(bào)頭里面還要包含發(fā)送方的IP和接收方的IP,這里發(fā)送方的IP就

    2024年02月20日
    瀏覽(101)
  • FRP內(nèi)網(wǎng)穿透參數(shù)配置+服務(wù)器與客戶端的簡(jiǎn)易配置+完整配置詳解(Windows)

    有設(shè)備A,想訪問處于局域網(wǎng)的設(shè)備C時(shí),可以通過處在公網(wǎng)的設(shè)備B進(jìn)行轉(zhuǎn)發(fā) 前提條件:一個(gè)有公網(wǎng)IP的電腦,云服務(wù)器、有公網(wǎng)IPV4/6的設(shè)備均可,如果使用ipv6模式,那么設(shè)備BC都必須支持ipv6才行,ipv6地址除了bind_addr和server_addr,都要用[]括起來(lái) 本文基于:v0.48.0版本 官網(wǎng): 官

    2024年02月05日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包