目錄
一、為什么要寫這篇文章,因?yàn)槲揖褪且肀脔鑿?,?dāng)然也是汲取了網(wǎng)上大咖們的經(jīng)驗(yàn),盡量簡(jiǎn)潔的進(jìn)行總結(jié)
二、關(guān)于接收數(shù)據(jù)需的條件,需要綁定本地IP地址和端口號(hào),可解釋為此時(shí)為服務(wù)器模式,遠(yuǎn)端為客戶端模式,實(shí)現(xiàn)的代碼非常簡(jiǎn)單幾行代碼可以搞定
三、數(shù)據(jù)的發(fā)送,就比較簡(jiǎn)單了,前提是需要知道對(duì)方的IP地址,端口號(hào)
一、為什么要寫這篇文章,因?yàn)槲揖褪且肀脔鑿?,?dāng)然也是汲取了網(wǎng)上大咖們的經(jīng)驗(yàn),盡量簡(jiǎn)潔的進(jìn)行總結(jié)
1、多線程使用;
2、不使用信號(hào)槽接收;
3、同時(shí)實(shí)現(xiàn)發(fā)送接收功能;
二、關(guān)于接收數(shù)據(jù)需的條件,需要綁定本地IP地址和端口號(hào),可解釋為此時(shí)為服務(wù)器模式,遠(yuǎn)端為客戶端模式,實(shí)現(xiàn)的代碼非常簡(jiǎn)單幾行代碼可以搞定
QUdpSocket udpServer; //定義UDP對(duì)象
QByteArray recvbuff; //接收數(shù)據(jù)緩存
udpServer.bind(QHostAddress::AnyIPv4,LPORT); //IP和端口綁定
線程數(shù)據(jù)接收代碼,可以在while()內(nèi)實(shí)現(xiàn)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-656459.html
udpServer.waitForReadyRead(1000); //等待接收數(shù)據(jù),沒(méi)有數(shù)據(jù)情況下會(huì)等待到設(shè)定時(shí)間,有數(shù)據(jù)會(huì)返回true,并且不需要等待到設(shè)定時(shí)間
if(!udpServer.hasPendingDatagrams()) //判斷是否有數(shù)據(jù)
continue;
QByteArray temBuff; //臨時(shí)內(nèi)存
temBuff.resize(int(udpServer.pendingDatagramSize())); //申請(qǐng)臨時(shí)內(nèi)存大小
udpServer.readDatagram(temBuff.data(), temBuff.size(),&RIP,&RPORT); //將數(shù)據(jù)保存至臨時(shí)內(nèi)存
recvbuff.append(temBuff); //將臨時(shí)內(nèi)存添加到接收數(shù)據(jù)緩存區(qū)等待解析處理
三、數(shù)據(jù)的發(fā)送,就比較簡(jiǎn)單了,前提是需要知道對(duì)方的IP地址,端口號(hào)
? ? ? ? 比如發(fā)送一段幀數(shù)據(jù)如下,具體數(shù)據(jù)自己定義文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-656459.html
QByteArray array;
array.append(0x55);
array.append(0xAA);
array.append(0x07);
array.append(crcData(array));
udpServer.writeDatagram(array, RIP, RPORT);
到了這里,關(guān)于Qt實(shí)現(xiàn)UDP高速通訊,下位機(jī)為FPGA的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!