Есть клиент, который посылает огромное кол-во пакетов на сервер, но только после подтверждения доставки на сервер.
Код:
...
QByteArray datagram;
while (!file.atEnd()) {
datagram=file.read(1024);
sendSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress(ip), port.toInt());
time=QDateTime::currentMSecsSinceEpoch();
while(getSocket->hasPendingDatagrams()==0)
{
if(QDateTime::currentMSecsSinceEpoch()-time>3000)
{
sendSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress(ip), port.toInt());
time=QDateTime::currentMSecsSinceEpoch();
}
}
getSocket->readDatagram(datagram.data(), datagram.size());
}
и есть сервер, который все это принимает и отсылает обратно ответ о получении.
КОд:
connect(getSocket, SIGNAL(readyRead()), this, SLOT(GetData()));
void MainWindow::GetData()
{
while (getSocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(getSocket->pendingDatagramSize());
getSocket->readDatagram(datagram.data(), datagram.size()/*,&sender,&senderPort*/);
QFile file("D:/2.mp4");
file.open(QIODevice::Append);
file.write(datagram);
file.close();
QByteArray datagram2 = "Good";
sendSocket->writeDatagram(datagram2.data(), datagram2.size(), QHostAddress(ip), port.toInt());
}
Возникает такая проблема: через какое-то определенное кол-во отправленных пакетов сервер перестает принимать пакеты. Т.е клиент шлет пакет, а сервер в ответ ничего. Из-за чего может быть?
Если убрать подтверждение доставки. т.е чтоб сервер не слал ответ, то почти все пакеты тупо не доходят...
Есть подозрение, что зависает где-то на записи в файл. Что скажите?