• 6153阅读
  • 4回复

[提问]请教关于UDP通讯问题 [复制链接]

上一主题 下一主题
离线hailmy
 

只看楼主 倒序阅读 楼主  发表于: 2014-02-24
需求是:本地IP 跟 下位机设备处于同一个IP段(192.168.1.1),现在需要发送数据包给 指定IP( 239.255.255.250) 端口(8002)
显示数据包能成功到达下位机设备,但是接收这边 接收不了 下位机发回来的数据包,通过截图可以看到 下位机是有发回反馈信息的,也是反馈到了指定IP( 239.255.255.250) 端口(8002),请教下,应该怎么来接收反馈回来的数据呢?截图中 192.168.1.128是本机IP 192.168.1.7是下位机设备。


部分代码:
    localHostAddr = new QHostAddress("192.168.1.128");
udpSocket->bind(*localHostAddr, 8002, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);   //绑定
connect(udpSocket, SIGNAL(readyRead()), this, SLOT(receive()), Qt::DirectConnection);    //连接

/*发送数据包*/

//发送给指定IP  指定端口
udpSocket->writeDatagram(data, data.length(), *remoteHostAddr, 8002);

/*接收函数*/
void MainWindow::receive()
{
    while (udpSocket->hasPendingDatagrams())
    {
        QByteArray Redata;

        Redata.resize(udpSocket->pendingDatagramSize());

        /*读取数据*/   //读取发送端IP 跟 端口
        udpSocket->readDatagram(Redata.data(), Redata.size(), remoteHostAddr, port_p);

        QMessageBox::information(this, "information", Redata);

        QMessageBox::information(this, "information", remoteHostAddr->toString());

    }
}

测试发现,接收不到下位机传回来的数据包,
后来采用广播方式发送也能到达下位机,但是反馈回来的是 我发出去的数据包。
/*广播方式发送*/
udpSocket->writeDatagram(data, data.length(), QHostAddress::Broadcast, 8002);
请求帮助,谢谢!
离线bingyifeng

只看该作者 1楼 发表于: 2014-02-24
没看太明白。。
>>通过截图可以看到 下位机是有发回反馈信息的,也是反馈到了指定IP( 239.255.255.250) 端口(8002),
那就得在  239.255.255.250 进行反馈信息处理。
如果你想在本机上进行处理
得让下位机把反馈消息回给 192.168.1.128
<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
离线hailmy

只看该作者 2楼 发表于: 2014-02-25
回 bingyifeng 的帖子
bingyifeng:没看太明白。。
>>通过截图可以看到 下位机是有发回反馈信息的,也是反馈到了指定IP( 239.255.255.250) 端口(8002),
那就得在  239.255.255.250 进行反馈信息处理。
如果你想在本机上进行处理
得让下位机把反馈消息回给 192.168.1.128  (2014-02-24 23:20) 

就是不能修改下位机所以才困扰。。。。
离线bingyifeng

只看该作者 3楼 发表于: 2014-02-27
回 hailmy 的帖子
hailmy:就是不能修改下位机所以才困扰。。。。 (2014-02-25 00:31) 

不知道你具体需求是什么。
如果你是想192.168.1.1 和 下位机直接通信的话。
又不能控制下位机回消息给本机
又控制不了239.255.255.250
那应该是无法实现的,除非能能有途径进行监听。

<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
离线hailmy

只看该作者 4楼 发表于: 2014-02-27
解决了,239.255.255.250 是个组播地址来的,接收这边只要加入这个组播组就可以接收到了。
快速回复
限100 字节
 
上一个 下一个