中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

哪種編程語(yǔ)言可以做網(wǎng)站軟文寫作范例大全

哪種編程語(yǔ)言可以做網(wǎng)站,軟文寫作范例大全,it人力外包公司,做律師事務(wù)所網(wǎng)站Qt 是一個(gè)跨平臺(tái)C圖形界面開發(fā)庫(kù),利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹如何運(yùn)用QUdpSocket組件實(shí)現(xiàn)基于UDP的組播通信…

Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫(kù),利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹如何運(yùn)用QUdpSocket組件實(shí)現(xiàn)基于UDP的組播通信。

組播是一種一對(duì)多的通信方式,允許一個(gè)發(fā)送者將數(shù)據(jù)報(bào)文發(fā)送到多個(gè)接收者,這些接收者通過(guò)共享相同的組播IP地址進(jìn)行通信。在設(shè)置組播地址時(shí)需要注意,該范圍被限制在239.0.0.0~239.255.255.255以內(nèi),這是預(yù)留給組播的地址范圍。

setSocketOption 設(shè)置套接字

在Qt中使用組播,首先需要調(diào)用setSocketOption函數(shù),該函數(shù)是 QUdpSocket 類的成員函數(shù),用于設(shè)置套接字的選項(xiàng)。

該函數(shù)原型如下:

bool QUdpSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant & value
)
  • option:要設(shè)置的套接字選項(xiàng),這里應(yīng)該是 QAbstractSocket::MulticastTtlOption,表示設(shè)置多播 TTL 選項(xiàng)。
  • value:選項(xiàng)的值,這里應(yīng)該是 TTL 的值。在 IPv4 中,TTL 是一個(gè) 8 位的字段,表示數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中允許經(jīng)過(guò)的最大路由器數(shù)量。通常情況下,TTL 值越大,數(shù)據(jù)報(bào)能夠傳播的范圍就越廣。

函數(shù)返回一個(gè) bool 類型的值,表示是否成功設(shè)置了選項(xiàng)。如果設(shè)置成功,返回 true,否則返回 false。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);udpSocket=new QUdpSocket(this);// 設(shè)置為多播udpSocket->setSocketOption(QAbstractSocket::MulticastTtlOption,1);
}

bind 綁定套接字地址

接著就是對(duì)特定端口的綁定,綁定端口可以通過(guò)調(diào)用bind函數(shù),該函數(shù)用于將 QUdpSocket 綁定到指定的本地地址和端口,并設(shè)置特定的綁定選項(xiàng)。

在我們的課件中,使用 bind()QUdpSocket 綁定到 IPv4 的任意地址,并指定了一個(gè)組播(Multicast)端口,同時(shí)設(shè)置了共享地址(ShareAddress)選項(xiàng)。

該函數(shù)原型如下:

void QUdpSocket::bind(const QHostAddress & address, quint16 port, BindMode mode = DefaultForPlatform
)
  • address:要綁定的本地地址,這里使用 QHostAddress::AnyIPv4 表示綁定到 IPv4 的任意地址。
  • port:要綁定的本地端口號(hào),這里應(yīng)該是組播端口號(hào)。
  • mode:綁定模式,指定套接字的行為。這里使用 QUdpSocket::ShareAddress 表示共享地址選項(xiàng),它允許多個(gè)套接字同時(shí)綁定到相同的地址和端口。

函數(shù)將 QUdpSocket 綁定到指定的地址和端口,并且允許多個(gè)套接字同時(shí)共享相同的地址和端口。

joinMulticastGroup 加入組播

joinMulticastGroup() 函數(shù)是 QUdpSocket 類的成員函數(shù),用于將 QUdpSocket 加入指定的多播組。

該函數(shù)原型如下:

bool QUdpSocket::joinMulticastGroup(const QHostAddress & groupAddress, const QNetworkInterface & iface = QNetworkInterface()
)
  • groupAddress:要加入的多播組的組播地址。
  • iface:要加入多播組的網(wǎng)絡(luò)接口。默認(rèn)情況下,會(huì)選擇默認(rèn)的網(wǎng)絡(luò)接口。

函數(shù)返回一個(gè) bool 類型的值,表示是否成功加入了多播組。如果成功加入多播組,返回 true;否則返回 false。通過(guò)調(diào)用 joinMulticastGroup() 函數(shù),QUdpSocket 將成為指定多播組的成員,并能夠接收該多播組發(fā)送的數(shù)據(jù)報(bào)。

// 開始組播
void MainWindow::on_pushButton_start_clicked()
{// 獲取IPQString IP= ui->lineEdit_address->text();groupAddress=QHostAddress(IP);// 獲取端口quint16 groupPort = ui->lineEdit_port->text().toUInt();// 綁定端口if (udpSocket->bind(QHostAddress::AnyIPv4, groupPort, QUdpSocket::ShareAddress)){// 加入組播udpSocket->joinMulticastGroup(groupAddress);ui->plainTextEdit->appendPlainText("[*] 加入組播 " + IP + ":" + QString::number(groupPort));}
}

leaveMulticastGroup 退出組播

leaveMulticastGroup() 函數(shù)用于將 QUdpSocket 從指定的多播組中移除。通過(guò)調(diào)用該函數(shù),QUdpSocket 將不再是指定多播組的成員,不再接收該多播組發(fā)送的數(shù)據(jù)報(bào)。

該函數(shù)原型如下:

bool QUdpSocket::leaveMulticastGroup(const QHostAddress & groupAddress, const QNetworkInterface & iface = QNetworkInterface()
)
  • groupAddress:要離開的多播組的組播地址。
  • iface:要離開多播組的網(wǎng)絡(luò)接口。默認(rèn)情況下,會(huì)選擇默認(rèn)的網(wǎng)絡(luò)接口。

函數(shù)返回一個(gè) bool 類型的值,表示是否成功離開了多播組。如果成功離開多播組,返回 true;否則返回 false。

// 關(guān)閉組播
void MainWindow::on_pushButton_stop_clicked()
{// 退出組播udpSocket->leaveMulticastGroup(groupAddress);udpSocket->abort();ui->plainTextEdit->appendPlainText("[-] 退出組播");
}

writeDatagram 發(fā)送數(shù)據(jù)報(bào)

writeDatagram() 函數(shù)是 QUdpSocket 類的成員函數(shù),用于發(fā)送數(shù)據(jù)報(bào)到指定的多播組。通過(guò)調(diào)用該函數(shù),可以將數(shù)據(jù)報(bào)發(fā)送到指定的多播組和端口,讓其他成員接收到該數(shù)據(jù)報(bào)。

其函數(shù)原型如下:

qint64 QUdpSocket::writeDatagram(const QByteArray & datagram, const QHostAddress & groupAddress, quint16 port
)
  • datagram:要發(fā)送的數(shù)據(jù)報(bào)的內(nèi)容,通常是一個(gè) QByteArray 對(duì)象。
  • groupAddress:要發(fā)送到的多播組的組播地址。
  • port:要發(fā)送到的多播組的端口號(hào)。

函數(shù)返回一個(gè) qint64 類型的值,表示實(shí)際發(fā)送的字節(jié)數(shù)。如果發(fā)送成功,返回發(fā)送的字節(jié)數(shù);否則返回 -1。

// 發(fā)送組播消息
void MainWindow::on_pushButton_send_clicked()
{quint16 groupPort = ui->lineEdit_port->text().toUInt();QString msg=ui->lineEdit_msg->text();QByteArray datagram=msg.toUtf8();udpSocket->writeDatagram(datagram,groupAddress,groupPort);
}

readDatagram 接收數(shù)據(jù)報(bào)

readDatagram() 函數(shù)是 QUdpSocket 類的成員函數(shù),用于從套接字中讀取數(shù)據(jù)報(bào),并將其存儲(chǔ)到指定的緩沖區(qū)中。通常情況下,可以使用這個(gè)函數(shù)來(lái)接收來(lái)自其他主機(jī)的數(shù)據(jù)報(bào)。通過(guò)使用該函數(shù)可從套接字中讀取數(shù)據(jù)報(bào),并獲取數(shù)據(jù)報(bào)的源地址和端口號(hào)。

其函數(shù)原型如下:

qint64 QUdpSocket::readDatagram(char * data, qint64 maxSize, QHostAddress * address = nullptr, quint16 * port = nullptr
)
  • data:指向用于存儲(chǔ)接收數(shù)據(jù)的緩沖區(qū)的指針。
  • maxSize:緩沖區(qū)的最大大小,即最多可以接收的字節(jié)數(shù)。
  • address:指向用于存儲(chǔ)發(fā)送數(shù)據(jù)報(bào)的源地址的 QHostAddress 對(duì)象的指針。
  • port:指向用于存儲(chǔ)發(fā)送數(shù)據(jù)報(bào)的源端口號(hào)的 quint16 類型的指針。

該函數(shù)返回一個(gè) qint64 類型的值,表示實(shí)際接收的字節(jié)數(shù)。如果接收成功,返回接收的字節(jié)數(shù);否則返回 -1。

// 讀取數(shù)據(jù)報(bào)
void MainWindow::onSocketReadyRead()
{while(udpSocket->hasPendingDatagrams()){QByteArray datagram;datagram.resize(udpSocket->pendingDatagramSize());QHostAddress peerAddr;quint16 peerPort;udpSocket->readDatagram(datagram.data(),datagram.size(),&peerAddr,&peerPort);QString str=datagram.data();QString peer="[從 "+peerAddr.toString()+":"+QString::number(peerPort)+" 發(fā)送] ";ui->plainTextEdit->appendPlainText(peer+str);}
}

讀者可自行運(yùn)行課件程序,并在多臺(tái)電腦中配置相同網(wǎng)段,當(dāng)點(diǎn)擊發(fā)送消息時(shí)所有同網(wǎng)段的程序都將收到廣播,如下圖所示;

http://www.risenshineclean.com/news/54300.html

相關(guān)文章:

  • 做論壇網(wǎng)站4g空間夠不夠用自己搭建網(wǎng)站需要什么
  • 電商網(wǎng)站建設(shè)的相關(guān)內(nèi)容seo服務(wù)外包公司
  • 外貿(mào)建站費(fèi)用安卓手機(jī)優(yōu)化神器
  • 企業(yè)網(wǎng)站建設(shè)方案.doc世界互聯(lián)網(wǎng)峰會(huì)
  • 網(wǎng)站開發(fā)總監(jiān)招聘中國(guó)騰訊和聯(lián)通
  • wordpress簡(jiǎn)體中文下載地址神馬快速排名優(yōu)化工具
  • 臺(tái)州做網(wǎng)站哪家好最近的電腦培訓(xùn)學(xué)校
  • 400網(wǎng)站建設(shè)價(jià)格今日頭條新聞在線看
  • 秦皇島黃金海岸濟(jì)寧seo公司
  • 那些做面點(diǎn)的網(wǎng)站好湖南競(jìng)價(jià)優(yōu)化哪家好
  • 織夢(mèng)中英文版網(wǎng)站怎么做免費(fèi)網(wǎng)站服務(wù)器
  • 幫網(wǎng)站做關(guān)鍵詞排名優(yōu)化信息流廣告是什么意思
  • 吉林市網(wǎng)站制作視頻剪輯培訓(xùn)
  • wordpress 主題導(dǎo)出seo店鋪描述例子
  • 自己怎么做企業(yè)網(wǎng)站建設(shè)百度站內(nèi)搜索代碼
  • 江漢建站公司推廣游戲怎么拉人最快
  • 香港的貿(mào)易公司可以做網(wǎng)站嗎優(yōu)化大師apk
  • 深圳大型網(wǎng)站建設(shè)服務(wù)公司汕頭seo外包機(jī)構(gòu)
  • 做后期的網(wǎng)站網(wǎng)頁(yè)自動(dòng)點(diǎn)擊軟件
  • 樂(lè)彩網(wǎng)站源碼網(wǎng)站建設(shè)在線培訓(xùn)app
  • 移動(dòng)端的網(wǎng)站怎么做的網(wǎng)絡(luò)推廣怎么賺錢
  • 免費(fèi)誒網(wǎng)站建設(shè)競(jìng)價(jià)專員是做什么的
  • 沈陽(yáng)網(wǎng)站制作全過(guò)程鎮(zhèn)江網(wǎng)站建站
  • 梵克雅寶四葉草項(xiàng)鏈官網(wǎng)刷seo排名
  • wordpress插件批量修改正文內(nèi)鏈seo顧問(wèn)收費(fèi)
  • 重慶網(wǎng)站建設(shè)推薦百度收錄怎么弄
  • 濮陽(yáng)網(wǎng)絡(luò)教育陜西網(wǎng)站關(guān)鍵詞自然排名優(yōu)化
  • 鄭州的網(wǎng)站建設(shè)公司哪家好軟文寫作網(wǎng)站
  • 巴中微信網(wǎng)站建設(shè)百度電話號(hào)碼
  • 南昌網(wǎng)站建設(shè)業(yè)務(wù)怎么做app推廣代理