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

TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程

這篇具有很好參考價(jià)值的文章主要介紹了TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

客戶(hù)端和服務(wù)器端建立通信過(guò)程

TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程,Qt,tcp/ip,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

使用Qt提供的類(lèi)進(jìn)行基于TCP的套接字通信需要用到兩個(gè)類(lèi):

QTcpServer:服務(wù)器類(lèi),用于監(jiān)聽(tīng)客戶(hù)端連接以及和客戶(hù)端建立連接。
QTcpSocket:通信的套接字類(lèi),客戶(hù)端、服務(wù)器端都需要使用。

服務(wù)器端QTcpServer

QTcpServer類(lèi)用于監(jiān)聽(tīng)客戶(hù)端連接以及和客戶(hù)端建立連接,在使用之前先介紹一下這個(gè)類(lèi)提供的一些常用API函數(shù):

公共成員函數(shù)

構(gòu)造函數(shù)

QTcpServer::QTcpServer(QObject *parent = nullptr)

給監(jiān)聽(tīng)的套接字設(shè)置監(jiān)聽(tīng)listen()函數(shù)

bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0);

在代碼中通過(guò)啟動(dòng)監(jiān)聽(tīng)按鈕設(shè)置監(jiān)聽(tīng)

//啟動(dòng)監(jiān)聽(tīng)服務(wù)
void MainWindow::on_setListen_released()
{
    unsigned short port =ui->port->text().toUShort();
    m_server->listen(QHostAddress::Any,port);
    ui->setListen->setDisabled(true);//

}

參數(shù):

  • address:通過(guò)類(lèi)QHostAddress可以封裝IPv4IPv6格式的IP地址,QHostAddress::Any表示自動(dòng)綁定。
  • port:如果指定為0表示隨機(jī)綁定一個(gè)可用端口。 返回值:綁定成功返回true,失敗返回false。

判斷當(dāng)前對(duì)象是否在監(jiān)聽(tīng), 是返回true,沒(méi)有監(jiān)聽(tīng)返回false

bool QTcpServer::isListening() const;

如果當(dāng)前對(duì)象正在監(jiān)聽(tīng),返回監(jiān)聽(tīng)的服務(wù)器地址信息, 否則返回 QHostAddress::Null

QHostAddress QTcpServer::serverAddress() const;

如果服務(wù)器正在偵聽(tīng)連接,則返回服務(wù)器的端口; 否則返回0

quint16 QTcpServer::serverPort() const

服務(wù)器端QTcpSocket

QTcpSocket是一個(gè)套接字通信類(lèi),不管是客戶(hù)端還是服務(wù)器端都需要使用。在Qt中發(fā)送和接收數(shù)據(jù)也屬于IO操作(網(wǎng)絡(luò)IO),先來(lái)看一下這個(gè)類(lèi)的繼承關(guān)系:




TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程,Qt,tcp/ip,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

得到和客戶(hù)端建立連接之后用于通信的QTcpSocket套接字對(duì)象,它是QTcpServer的一個(gè)子對(duì)象,當(dāng)QTcpServer對(duì)象析構(gòu)的時(shí)候會(huì)自動(dòng)析構(gòu)這個(gè)子對(duì)象,當(dāng)然也可自己手動(dòng)析構(gòu),建議用完之后自己手動(dòng)析構(gòu)這個(gè)通信的QTcpSocket對(duì)象。

QTcpSocket *QTcpServer::nextPendingConnection();

阻塞等待客戶(hù)端發(fā)起的連接請(qǐng)求,不推薦在單線(xiàn)程程序中使用waitForNewConnection(),建議使用非阻塞方式處理新連接,即使用信號(hào) newConnection() 。

bool QTcpServer::waitForNewConnection(int msec = 0, bool *timedOut = Q_NULLPTR);

參數(shù):

  1. msec:指定阻塞的最大時(shí)長(zhǎng),單位為毫秒(ms);
  2. timeout:傳出參數(shù),如果操作超時(shí)timeouttrue,沒(méi)有超時(shí)timeoutfalse

套接字通信的過(guò)程中的信號(hào)

1.在使用QTcpSocket進(jìn)行套接字通信的過(guò)程中,如果該類(lèi)對(duì)象發(fā)射出readyRead()信號(hào),說(shuō)明對(duì)端發(fā)送的數(shù)據(jù)達(dá)到了,之后就可以調(diào)用 readAll ()函數(shù)接收數(shù)據(jù)了。

[signal] void QIODevice::readyRead();

官方解釋

This signal is emitted once every time new data is available for reading from the device's current read channel. It will only be emitted again once new data is available, such as when a new payload of network data has arrived on your network socket, or when a new block of data has been appended to your device

2.調(diào)用connectToHost()函數(shù)并成功建立連接之后發(fā)出connected()信號(hào)。

[signal] void QAbstractSocket::connected();

3.在套接字?jǐn)嚅_(kāi)連接時(shí)發(fā)出disconnected()信號(hào)。

[signal] void QAbstractSocket::disconnected();

TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程,Qt,tcp/ip,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程,Qt,tcp/ip,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程,Qt,tcp/ip,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

接收數(shù)據(jù)

// 指定可接收的最大字節(jié)數(shù) maxSize 的數(shù)據(jù)到指針 data 指向的內(nèi)存中
qint64 QIODevice::read(char *data, qint64 maxSize);
// 指定可接收的最大字節(jié)數(shù) maxSize,返回接收的字符串
QByteArray QIODevice::read(qint64 maxSize);
// 將當(dāng)前可用操作數(shù)據(jù)全部讀出,通過(guò)返回值返回讀出的字符串
QByteArray QIODevice::readAll();

發(fā)送數(shù)據(jù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-731945.html

// 發(fā)送指針 data 指向的內(nèi)存中的 maxSize 個(gè)字節(jié)的數(shù)據(jù)
qint64 QIODevice::write(const char *data, qint64 maxSize);
// 發(fā)送指針 data 指向的內(nèi)存中的數(shù)據(jù),字符串以 \0 作為結(jié)束標(biāo)記
qint64 QIODevice::write(const char *data);
// 發(fā)送參數(shù)指定的字符串
qint64 QIODevice::write(const QByteArray &byteArray);

到了這里,關(guān)于TCP/IP客戶(hù)端和服務(wù)器端建立通信過(guò)程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(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/IP網(wǎng)絡(luò)編程》閱讀筆記--基于UDP的服務(wù)器端/客戶(hù)端

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于UDP的服務(wù)器端/客戶(hù)端

    目錄 1--TCP和UDP的主要區(qū)別 2--基于 UDP 的數(shù)據(jù) I/O 函數(shù) 3--基于 UDP 的回聲服務(wù)器端/客戶(hù)端 4--UDP客戶(hù)端Socket的地址分配 5--UDP存在數(shù)據(jù)邊界 6--UDP已連接與未連接的設(shè)置 ① TCP 提供的是可靠數(shù)據(jù)傳輸服務(wù),而 UDP 提供的是不可靠數(shù)據(jù)傳輸服務(wù); ② UDP 在結(jié)構(gòu)上比 TCP 更簡(jiǎn)潔,其不會(huì)

    2024年02月09日
    瀏覽(53)
  • socket的使用 | TCP/IP協(xié)議下服務(wù)器與客戶(hù)端之間傳送數(shù)據(jù)

    socket的使用 | TCP/IP協(xié)議下服務(wù)器與客戶(hù)端之間傳送數(shù)據(jù)

    謹(jǐn)以此篇,記錄TCP編程,方便日后查閱筆記 注意:用BufferedWriter write完后,一定要flush;否則字符不會(huì)進(jìn)入流中。去看源碼可知:真正將字符寫(xiě)入的不是write(),而是flush()。 服務(wù)器端代碼: 客戶(hù)端代碼: 運(yùn)行后結(jié)果: 服務(wù)器端: 客戶(hù)端: 參考資料: https://www.bilibili.com/vid

    2024年02月09日
    瀏覽(39)
  • 《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于Windows實(shí)現(xiàn)Hello Word服務(wù)器端和客戶(hù)端

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于Windows實(shí)現(xiàn)Hello Word服務(wù)器端和客戶(hù)端

    目錄 1--Hello Word服務(wù)器端 2--客戶(hù)端 3--編譯運(yùn)行 3-1--編譯服務(wù)器端 3-2--編譯客戶(hù)端 3-3--運(yùn)行 運(yùn)行結(jié)果:

    2024年02月10日
    瀏覽(62)
  • 【無(wú)標(biāo)題】TCP,UDP,DNS以及配置網(wǎng)關(guān)IP地址和在ensp中,在客戶(hù)端用域名或IP地址獲取服務(wù)器的文件的實(shí)驗(yàn)

    【無(wú)標(biāo)題】TCP,UDP,DNS以及配置網(wǎng)關(guān)IP地址和在ensp中,在客戶(hù)端用域名或IP地址獲取服務(wù)器的文件的實(shí)驗(yàn)

    PDU:協(xié)議數(shù)據(jù)單元 應(yīng)用層:數(shù)據(jù)報(bào)文 傳輸層:數(shù)據(jù)段 網(wǎng)絡(luò)層:數(shù)據(jù)包 數(shù)據(jù)鏈路層:數(shù)據(jù)幀 物理層:比特流(電流) ? 應(yīng)用層的常見(jiàn)協(xié)議: HTTP----基于TCP協(xié)議 占據(jù)80端口號(hào) 超文本傳輸協(xié)議 HTTPS----基于TCP協(xié)議 占據(jù)443端口號(hào) 安全傳輸協(xié)議 SSH----基于TCP協(xié)議 占據(jù)22端口號(hào) 安全外

    2024年02月04日
    瀏覽(25)
  • FPGA實(shí)現(xiàn)10G萬(wàn)兆網(wǎng)TCP/IP 協(xié)議棧,純VHDL代碼編寫(xiě),提供服務(wù)器和客戶(hù)端2套工程源碼和技術(shù)支持

    FPGA實(shí)現(xiàn)10G萬(wàn)兆網(wǎng)TCP/IP 協(xié)議棧,純VHDL代碼編寫(xiě),提供服務(wù)器和客戶(hù)端2套工程源碼和技術(shù)支持

    目前網(wǎng)上fpga實(shí)現(xiàn)udp協(xié)議的源碼滿(mǎn)天飛,我這里也有不少,但用FPGA純?cè)创a實(shí)現(xiàn)TCP的項(xiàng)目卻很少,能上板調(diào)試跑通的項(xiàng)目更是少之又少,甚至可以說(shuō)是鳳毛菱角,但很不巧,本人這兒就有一個(gè); 本設(shè)采用純VHDL實(shí)現(xiàn)了10G萬(wàn)兆網(wǎng)TCP/IP協(xié)議棧,該協(xié)議棧分為T(mén)CP服務(wù)器核客戶(hù)端,沒(méi)有使

    2024年02月09日
    瀏覽(31)
  • Qt 服務(wù)器/客戶(hù)端TCP通訊

    Qt 服務(wù)器/客戶(hù)端TCP通訊

    最近需要用到TCP/IP通訊,這邊就先找個(gè)簡(jiǎn)單的例程學(xué)習(xí)一下。Qt的TCP通訊編程可以使用QtNetwork模塊,QtNetwork模塊提供的類(lèi)能夠創(chuàng)建基于TCP/IP的客戶(hù)端與服務(wù)端應(yīng)用程序,一般會(huì)使用QTcpSocket、QTcpServer類(lèi) 網(wǎng)絡(luò)通信方式主要有兩種:TCP與UDP。以下拷貝網(wǎng)絡(luò)上總結(jié)兩者之間的區(qū)別:

    2023年04月26日
    瀏覽(18)
  • QT實(shí)現(xiàn)tcp服務(wù)器客戶(hù)端
  • TCP實(shí)現(xiàn)服務(wù)器和客戶(hù)端通信

    TCP實(shí)現(xiàn)服務(wù)器和客戶(hù)端通信

    目錄 TCP介紹 代碼實(shí)現(xiàn) server(服務(wù)器端) 代碼分析 client(客戶(hù)端) 代碼分析 結(jié)果展示 TCP (Transmission Control Protocol) 是一種面向連接的協(xié)議,用于在計(jì)算機(jī)網(wǎng)絡(luò)中傳輸數(shù)據(jù)。TCP 可以確保數(shù)據(jù)的可靠傳輸,即使在網(wǎng)絡(luò)環(huán)境不穩(wěn)定的情況下也能夠保證數(shù)據(jù)的完整性和順序。以下是

    2024年02月15日
    瀏覽(39)
  • 簡(jiǎn)易TCP客戶(hù)端和服務(wù)器端通信

    #includeiostream #include winsock2.h ? #include ws2tcpip.h ? #includestdlib.h using namespace std; #define ?BUF_SIZE ?1024 int main() { ? ? cout \\\"客戶(hù)端\\\" endl; ? ? //設(shè)置Winsock版本, ? ? WSADATA ? wsaData; ? ? if (WSAStartup(MAKEWORD(2, 2), wsaData) != 0) ? ? { ? ? ? ? cout \\\"error\\\" endl; ? ? ? ? exit(1); ? ? } ? ? //創(chuàng)建通

    2024年04月29日
    瀏覽(23)
  • 【Micropython基礎(chǔ)】TCP客戶(hù)端與服務(wù)器

    【Micropython基礎(chǔ)】TCP客戶(hù)端與服務(wù)器

    MicroPython 是 Python 的一種精簡(jiǎn)實(shí)現(xiàn),旨在運(yùn)行于微控制器和嵌入式系統(tǒng)等資源受限的環(huán)境中。它提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)編寫(xiě)和運(yùn)行 Python 代碼,使開(kāi)發(fā)人員能夠快速地創(chuàng)建各種嵌入式應(yīng)用程序。 在嵌入式系統(tǒng)中,網(wǎng)絡(luò)通信是一個(gè)常見(jiàn)的需求,而 TCP(傳輸控制協(xié)議)是

    2024年04月28日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包