Пишу программу, которая обменивается между клиентами в сети с аналогичными программами некой информацией. В локальной сети все заработало, а вот с VPN возникли проблемы, слот, который обрабатывает сигнал readyRead просто не вызывается, то есть информация как-будто бы проходит мимо. Wireshark на этом клиенте видит что пакеты с данными доходят, но сам Qt их не читает. В чем могут быть причины?
Слушатель:
#include <Interlocutor.h>
#include <QDebug>
#include <QDateTime>
Interlocutor::Interlocutor(QAudioFormat &format){
socket = new QUdpSocket();
socket->bind(QHostAddress::Any, 14433);
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
if (!info.isFormatSupported(format))
format = info.nearestFormat(format);
output = new QAudioOutput(format);
device = output->start();
connect(socket, SIGNAL(readyRead()), this, SLOT(playData()));
}
void Interlocutor::playData()
{
qDebug() << QDateTime::currentDateTime();
while (socket->hasPendingDatagrams())
{
QByteArray data;
data.resize(socket->pendingDatagramSize());
socket->readDatagram(data.data(), data.size());
device->write(data.data(), data.size());
}
}
Отправитель:
#include "VoiceSender.h"
VoiceSender::VoiceSender(QAudioFormat &format, QString ip){
input = new QAudioInput(format);
QUdpSocket* socket = new QUdpSocket();
socket->connectToHost(ip, 14433);
input->start(socket);
}