下面是我在服務端接收并回傳訊息的一段代碼:
QHostAddress clientAddress;
while( receiver->hasPendingDatagrams() ){
quint16 recPort = 0;
QByteArray datagram;
datagram.resize( receiver->pendingDatagramSize() );
//接收資料報
receiver->readDatagram(datagram.data(),datagram.size(), &clientAddress, &recPort);
QString strData=https://bbs.csdn.net/topics/ datagram;
//將資料添加到界面
QStringList items = {datagram,clientAddress.toString(), QString::number(recPort)};
int col = ui->tableWidget->columnCount();
ui->tableWidget->insertRow(0);
for(int c=0;c<col;c++){
QTableWidgetItem *item = new QTableWidgetItem(items[c]);
ui->tableWidget->setItem(0,c,item);
}
QByteArray datagback = getIp().toLatin1();
QHostAddress addressBack = QHostAddress::Broadcast;
receiver->writeDatagram(datagback,datagback.size(),addressBack,recPort);
}
我用 clientAddress 接收客戶端的地址,用 addressBack 存了本地地址,結果發現 writeDatagram 時無論用哪一個,客戶端都能正常收到回傳訊息。
是不是因為我的服務端和客戶端都在同一臺機器上?如果用不同機器是不是就必須得用 clientAddress了?
目前困在家里,沒有測驗環境,求大佬指點。
還有一個問題,我用兩個客戶端系結了同一個埠,服務接收到的第一個是我系結的那個,第二個卻是一個隨機的
這是因為埠被占用所以隨機分配了另一個嗎?實際運用中有沒有什么需要注意的地方?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/64253.html
標籤:Qt
上一篇:關于安卓音樂播放器問題
