Чтение по udp сетевых данных в программе_2:
QUdpSocket oUDPSocket;
QByteArray baoBufRecv;
unsigned short usSendPort;
QHostAddress haoLocalAddr, haoSenderAddr;
baoBufRecv.resize(65535);
haoLocalAddr.setAddress("127.0.0.1");
oUDPSocket.bind(haoLocalAddr, 5000);
connect(&oUDPSocket, SIGNAL(readyRead()), this, SLOT(sltReadDatagram()));
//-----------------------------------------------------------------------------
void Interaction::sltReadDatagram()
{
vReadDatagram();
}
//-----------------------------------------------------------------------------
void Interaction::vReadDatagram()
{
while (_oUDPSocket.hasPendingDatagrams())
{
long lSize = oUDPSocket.pendingDatagramSize();
oUDPSocket.readDatagram(baoBufRecv.data(), lSize, &haoSenderAddr, &usSendPort);
...
}
}
class Interaction: public QThread
{
}
Проблема в том, что программа_2 принимает всего около 10 сетевых посылок, а потом vReadDatagram перестает вызываться, как будто перестают идти данные от программы_1, но это не так (проверено индикацией данных от программы_1 в простейшей программе_3 и tcpdump-ом). Программа_2 достаточно сложна (многопоточна, gui c opengl) и что может приводить к такому "сетевому обрыву" - непонятно.