Russian Qt Forum

Qt => Работа с сетью => Тема начата: RomiX от Июнь 26, 2013, 10:05



Название: QUdpSocket loop
Отправлено: RomiX от Июнь 26, 2013, 10:05
Здравствуйте. Пишу приложение общающееся с другими такими же приложениями по UDP, отправляя пакеты на broadcast адрес. Возникла такая проблема: при отправке пакета он тут же принимается отправляющей стороной. Поиск почти ничего не дал, кроме флага SIO_RCVALL но похоже установить его средствами Qt нельзя, да и не кросс платформенно в любом случае получается(
Вот кусочек кода
Код:
m_udp = new QUdpSocket(this);
m_udp->bind(7878, QUdpSocket::ShareAddress);
connect(m_udp, &QUdpSocket::readyRead, this, &ShxNetwork::processPendingDatagrams);
отправляю через этот же сокет вот так:
Код:
m_udp->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 7878);
где datagram это QByteArray
Может кто знает как решить эту проблему? Заранее благодарен.


Название: Re: QUdpSocket loop
Отправлено: Old от Июнь 26, 2013, 10:20
Так а в чем проблема? Вы отправляете датаграмму всем и себе в том числе (если сами слушаете этот порт).


Название: Re: QUdpSocket loop
Отправлено: Bepec от Июнь 26, 2013, 10:20
Отсеивайте пакеты от себя. Вам жеж доступен текущий адрес компа + доступен адрес отправителя в пакете?


Название: Re: QUdpSocket loop
Отправлено: RomiX от Июнь 26, 2013, 10:52
Спасибо=) Просто думал есть более изящный способ...