最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT TCP實現(xiàn)簡單的通信示例

 更新時間:2022年08月22日 09:01:39   作者:Licht小粉  
這篇文章主要為大家詳細介紹了QT TCP簡單的通信示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了QT TCP實現(xiàn)簡單通信示例的具體代碼,供大家參考,具體內容如下

TCP服務端:

第一步: 創(chuàng)建監(jiān)聽套接字的QTcpSever

QTcpServer *m_tsTcpServer;

第二步: listen------監(jiān)聽是否有新的連接進來

int iMyport;如果有新的客戶端連接的話,會觸發(fā)信號newConnection(),定義一個槽函數(shù)接收連接好的套接字.

//監(jiān)聽的端口號
iMyport = iPort;
//判斷是否接收到了新的連接
if(m_tsTcpServer->listen(QHostAddress::Any,iMyport))
? ? {
? ? ? ? connect(m_tsTcpServer,SIGNAL(newConnection()),this,SLOT(slotServerNewConnection()));
? ? }
? ? else
? ? {
? ? ? ? qDebug() << "server listen error";
? ? }

第三步: 取出套接字

QTcpSocket *m_tsTcpSocket; 如果客戶端有消息進來的話,會觸發(fā)信號readyRead();斷開連接的話會觸發(fā)disconnected();

//獲得連接客戶端的SOCKET套接字
m_tsTcpSocket = m_tsTcpServer->nextPendingConnection();

//獲取對方的IP和端口
QString sIp = m_tsTcpSocket->peerAddress().toString();
quint16 sPort = m_tsTcpSocket->peerPort();
qDebug() << sIp << sPort;

connect(m_tsTcpSocket,SIGNAL(readyRead()),this,SLOT(slotServerReadData()));
connect(m_tsTcpSocket, SIGNAL(disconnected()), this, SLOT(slotServerDisConnection()));

第四步: 讀取套接字的內容

//從socket中讀出數(shù)據(jù)
QByteArray baArray = m_tsTcpSocket->readAll();
QString sMsg = baArray;

到此服務端簡單的通信搭建就完成了.

TCP客戶端:

第一步: 創(chuàng)建套接字,與服務端的IP地址和端口號連接.注:這里的端口號和上面服務端綁定的那個端口號是一樣的,別搞錯了.

//連接服務端
m_tsTcpSocket->connectToHost(sIP,iPort);
//成功連接返回true,錯誤返回false
if(m_tsTcpSocket->waitForConnected())
? ? {
? ? ? ? qDebug() << "connect success";
? ? }
? ? //成功連接會觸發(fā)槽函數(shù) 如果在找在這個槽函數(shù)里寫write的話只能寫一次,所以可以等連接成功后自己把寫的函數(shù)放在自己想要發(fā)送的模塊
? ? //connect(m_tsTcpSocket,SIGNAL(connected()),this,SLOT(slotConnectedSuccess()));

第二步: 連接成功后就可以直接向服務端發(fā)消息了.

QString str;
int iSize = m_tsTcpSocket->write(str.toUtf8().data());//返回字節(jié)的大小
//等待write寫完再寫下一次的write
? ? if(!m_tsTcpSocket->waitForBytesWritten(50000))
? ? {
? ? ? ? return;
? ? }
? ? //判斷發(fā)送是否成功
? ? if(iSize ==-1)
? ? {
? ? ? ? qDebug() << "write error";
? ? ? ? return;
? ? }

到此客戶端的簡單通信就搭建好了.

若要多次向服務端發(fā)消息,可以while循環(huán)或者是其他.在這里要注意如果要多次發(fā)消息的話,waitForBytesWritten()這個函數(shù)是必不可少的,不然多次的話可能通信會失敗.

注:write()函數(shù)和被觸發(fā)的讀的readyRead()信號并不是一一對應的,比如可能你客戶端write了三次,服務端那邊的readyRead可能才被觸發(fā)一次.

想要了解詳細的原因可以自己再去了解.

同理服務端向客服端發(fā)消息的話直接發(fā)送就可,服務端要收消息的話也是直接讀就好,因為連接已經成功了.
相信小聰明腦袋瓜的你能懂的.

補充:客戶端主動斷開服務的連接

void TcpClient::disConnectSever()
{
? ? //方式一
? ? m_tcpSocket->flush();
? ? m_tcpSocket->disconnectFromHost();
? ??
? ? //方式二
? ? m_tcpSocket->abort();
}

注:方式二abort與方式一的區(qū)別:abort中止當前連接并重置套接字。與disConnectFromHost()不同,該函數(shù)會立即關閉套接字,丟棄寫緩沖區(qū)中的所有掛起數(shù)據(jù)。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言入門之指針用法教程

    C語言入門之指針用法教程

    這篇文章主要介紹了C語言入門之指針用法教程,主要對C語言中指針的本質及常見用法做了較為通俗易懂的分析,是后續(xù)深入學習C語言的基礎,需要的朋友可以參考下
    2014-09-09
  • c++使用regex報錯regex_error兩種解決方案

    c++使用regex報錯regex_error兩種解決方案

    C++正則表達式是一個非常強大和實用的工具,但是使用它們時需要注意仔細檢查代碼是否符合語法規(guī)則,這篇文章主要給大家介紹了關于c++使用regex報錯regex_error的兩種解決方案,需要的朋友可以參考下
    2024-03-03
  • 解析C語言中如何正確使用const

    解析C語言中如何正確使用const

    本篇文章是對C語言中如何正確使用const,進行了詳細的分析介紹。需要的朋友參考下
    2013-05-05
  • C語言實現(xiàn)靜態(tài)版通訊錄的代碼分享

    C語言實現(xiàn)靜態(tài)版通訊錄的代碼分享

    這篇文章主要為大家詳細介紹了如何利用C語言實現(xiàn)一個簡單的靜態(tài)版通訊錄,主要運用了結構體,一維數(shù)組,函數(shù),分支與循環(huán)語句等等知識,需要的可以參考一下
    2023-01-01
  • DSP中浮點轉定點運算--定點數(shù)的加減乘除運算

    DSP中浮點轉定點運算--定點數(shù)的加減乘除運算

    本文主要介紹DSP中定點數(shù)的加減乘除運算,很值得學習一下,需要的朋友可以參考一下。
    2016-06-06
  • c語言左移和右移的示例詳解

    c語言左移和右移的示例詳解

    這篇文章主要介紹了c語言左移和右移的示例詳解,移位操作符的兩個操作數(shù)必須是整型的。整個移位表達式的值的類型也是整型的,而且,左移位操作符與右移位操作符的運算并不對稱。
    2020-07-07
  • C++標準庫學習之weak_ptr智能指針用法詳解

    C++標準庫學習之weak_ptr智能指針用法詳解

    這篇文章主要為大家詳細介紹了C++標準庫中weak_ptr智能指針用法的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • 詳解c++ 繼承

    詳解c++ 繼承

    這篇文章主要介紹了c++ 繼承的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • c++11?實現(xiàn)枚舉值到枚舉名的轉換問題

    c++11?實現(xiàn)枚舉值到枚舉名的轉換問題

    這篇文章主要介紹了c++11?實現(xiàn)枚舉值到枚舉名的轉換,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C語言學生管理系統(tǒng)源碼分享

    C語言學生管理系統(tǒng)源碼分享

    這篇文章主要為大家分享了C語言學生管理系統(tǒng)的源碼,幫助大家學習結構體,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

宁城县| 南川市| 蚌埠市| 瓮安县| 拜城县| 昭平县| 崇阳县| 襄樊市| 宜阳县| 宽甸| 庄河市| 台东县| 瑞金市| 内丘县| 栾城县| 启东市| 开阳县| 定结县| 全州县| 元谋县| 荣成市| 兴宁市| 隆回县| 凤凰县| 九寨沟县| 嘉祥县| 金乡县| 翼城县| 华容县| 图们市| 宁河县| 吉安市| 武胜县| 临湘市| 新兴县| 星子县| 肥乡县| 台南县| 达日县| 灵寿县| 哈尔滨市|