Название: Несколько TCP сокетов для разных портов
Отправлено: Harlon от Май 25, 2018, 22:27
Суть проблемы создал в клиентском приложении 3 сокета на разные порты, соединяюсь с сервером по этим портам. Далее передаю информацию по одному сокету, сервер мне посылает ответ и всё хорошо, но когда я посылаю данные со второго сокета, данные на сервер, то приходят и обратно отправляются, и даже в массив байтов записываются, но дальше этого не уходят, данные не выводятся даже в qDebug. Я уже 2 radyread завел и один чёрт не получается... Помогите пожалуйста с проблемой, может я не догоняю чего-то... C++ (Qt) void MainWindow::sockReady() { if (socket->waitForConnected(500) && controlsock->waitForConnected(500)) { CData = controlsock->readAll(); ASCANData = socket->readAll(); if (ASCANData.count() != 0 || CData.count() != 0) { // ========================== получение АСКАН ================== QDataStream ds(ASCANData); // open stream QVector <int> acData(750); // initalize vector // transformations QByteArray to int array for (int i = 0; i < 750; i++) { ds.setByteOrder(QDataStream::LittleEndian); ds >> acData[i]; } // read int array for (int i = 0; i < 750; i++) { int k = acData[i]; } // output array to qDebug qDebug() << acData; // ========================== конец получения АСКАН ================== // ===================== отрисовка графика ===================== QVector <double> x(750), y(750); for (int i=0; i<750; i++) { x[i] = i; y[i] = acData[i]; } // создаем график и добавляем данные: ui->widget->addGraph(); ui->widget->graph(0)->setData(x, y); // задаем имена осей координат ui->widget->xAxis->setLabel("Time"); ui->widget->yAxis->setLabel("Mod"); // задаем размеры осей ui->widget->xAxis->setRange(0, 750); ui->widget->yAxis->setRange(0, 750); ui->widget->replot(); ASCANData.clear(); // ======================== конец отрисовки ===================== // ======================== END ASCAN =========================== // ======================== Control socket ====================== qDebug() << CData; QString connstat; connstat.append(CData); qDebug() << connstat; CData.clear(); // ======================== Control socket END ================== } else { ui->textEdit->append("Error recevd"); } } else { ui->textEdit->append("Not connected"); } }
это корявый раскорявый код принимающего слота
Название: Re: Несколько TCP сокетов для разных портов
Отправлено: qate от Май 26, 2018, 19:33
гдето ошибка в программе и зачем три сокета а не один ?
Название: Re: Несколько TCP сокетов для разных портов
Отправлено: Harlon от Май 26, 2018, 21:03
гдето ошибка в программе и зачем три сокета а не один ?
На LWIP поднято 3 порта на один IP, Один порт для получения одного вида данных, второй порт для получения других данных и третий порт для управления. Я если правильно понимаю, надо делать 3 сокета на 3 порта или я не прав. На счет кода, ответ на CData я получаю только тогда, когда отправлю запрос на ASCANData, хотя вроде, что там такое должно мне помешать получать данные...?
Название: Re: Несколько TCP сокетов для разных портов
Отправлено: Harlon от Май 27, 2018, 19:05
Всё разобрался в чем дело, как и сказал товарищ выше, всё в моем коде. Спасибо, что ответил.
|