Russian Qt Forum
Октябрь 16, 2018, 03:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Несколько TCP сокетов для разных портов  (Прочитано 551 раз)
Harlon
Новичок

Offline Offline

Сообщений: 39


Просмотр профиля
« : Май 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");
   }
}
 

это корявый раскорявый код принимающего слота
« Последнее редактирование: Май 26, 2018, 17:39 от Harlon » Записан
qate
Гипер активный житель
*****
Offline Offline

Сообщений: 897


Просмотр профиля
« Ответ #1 : Май 26, 2018, 19:33 »

гдето ошибка в программе
и зачем три сокета а не один ?
Записан
Harlon
Новичок

Offline Offline

Сообщений: 39


Просмотр профиля
« Ответ #2 : Май 26, 2018, 21:03 »

гдето ошибка в программе
и зачем три сокета а не один ?

На LWIP поднято 3 порта на один IP, Один порт для получения одного вида данных, второй порт для получения других данных и третий порт для управления. Я если правильно понимаю, надо делать 3 сокета на 3 порта или я не прав.

На счет кода, ответ на CData я получаю только тогда, когда отправлю запрос на ASCANData, хотя вроде, что там такое должно мне помешать получать данные...?
Записан
Harlon
Новичок

Offline Offline

Сообщений: 39


Просмотр профиля
« Ответ #3 : Май 27, 2018, 19:05 »

Всё разобрался в чем дело, как и сказал товарищ выше, всё в моем коде. Спасибо, что ответил.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.077 секунд. Запросов: 22.