新手求教一个关于 QUdpSocket 的基础问题

cjyyj 2020-02-20 10:58:22
下面是我在服务端接收并返回消息的一段代码:

QHostAddress clientAddress;
while( receiver->hasPendingDatagrams() ){
quint16 recPort = 0;
QByteArray datagram;
datagram.resize( receiver->pendingDatagramSize() );
//接收数据报
receiver->readDatagram(datagram.data(),datagram.size(), &clientAddress, &recPort);
QString strData= 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了?
目前困在家里,没有测试环境,求大佬指点。

还有一个问题,我用两个客户端绑定了同一个端口,服务接收到的第一个是我绑定的那个,第二个却是一个随机的
这是因为端口被占用所以随机分配了另一个吗?实际运用中有没有什么需要注意的地方?
...全文
59 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,175

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧