Alex M
June 12, 2019, 1:44 p.m.

QTcpSocket не могу добиться отправки строки

QTcpSocket

Доброе время суток, начал пробывать работать с QTcpSocket и не как не могу добится отправки на сервер и с сервера строк. Посмотри те где я косяк


  1. // Так стортует сервер
  2. void UICore::on_StartServ_clicked()
  3. {
  4. tcpServer = new QTcpServer(this);
  5. connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newuser()));
  6. if (!tcpServer->listen(QHostAddress::Any, ui->lE_Port->text().toInt()) && server_status==0) {
  7. qDebug() << QObject::tr("Unable to start the server: %1.").arg(tcpServer->errorString());
  8. ui->textBrowser->append(tcpServer->errorString());
  9. } else {
  10. server_status=1;
  11. qDebug() << tcpServer->isListening() << "TCPSocket listen on port";
  12. ui->textBrowser->append(QString::fromUtf8("Сервер запущен!"));
  13. ui->textBrowser->append(QString::fromUtf8("Порт " + ui->lE_Port->text().toUtf8()));
  14. qDebug() << QString::fromUtf8("Сервер запущен!");
  15. }
  16. ui->tabWidget->setCurrentIndex(0);
  17. ui->StartServ->setEnabled(false);
  18. ui->Settings->setEnabled(false);
  19. }
  20.  
  21. // так работает слот реадирид
  22.  
  23. QTcpSocket* clientSocket = (QTcpSocket*)sender();
  24. int idusersocs=clientSocket->socketDescriptor();
  25. QTextStream os(clientSocket);
  26. os.setAutoDetectUnicode(true);
  27. QString tmp = "HTTP/1.0 200 Ok\r\nContent-Type: text/html; charset=\"utf-8\"\r\n\r\n<h1>Test web Server</h1>\n";
  28. ui->textBrowser->append("ReadClient:"+clientSocket->readAll()+"\n\r");
  29.  
  30. sendToClientStr(clientSocket,tmp);
  31. qDebug () << "test";
  32. break;
  33.  
  34.  
  35.  

Как бы если на этом этапе подключится с браузера то все ок. Но вот если попробывать вот так то беда

  1. // конектимся к серверу и передаем сообщение
  2. //
  3. void UICore::on_cB_connect_clicked()
  4. {
  5. _socket->connectToHost(ui->lE_server->text().toUtf8(), ui->lE_port->text().toShort());
  6. if(_socket->error()) {
  7. ui->tB_logs->append("Connectid by " + ui->lE_server->text().toUtf8() + " port " + ui->lE_port->text().toUtf8() );
  8. }else{
  9. QMessageBox *msg = new QMessageBox;
  10. msg->setText(_socket->errorString());
  11. msg->show();
  12. }
  13. QString tmp = "test";
  14. sendToServerStr(tmp.toUtf8());
  15. }
  16.  
  17. bool UICore::sendToServerStr(QString str)
  18. {
  19. QByteArray block;
  20. QDataStream sendStream (&block,QIODevice::ReadWrite);
  21. sendStream.setVersion(QDataStream::Qt_5_9);
  22.  
  23. sendStream << quint16(0) << str;
  24. sendStream.device()->seek(0);
  25. sendStream << (quint16)(block.size() - sizeof(quint16));
  26. _socket->write(block);
  27. _socket->flush();
  28. return true;
  29. }
2

Do you like it? Share on social networks!

2
Алексей Внуков
  • June 12, 2019, 8:54 p.m.
  • The answer was marked as a solution.

а где слот newuser() и его обвязка?

    Alex M
    • June 12, 2019, 9:30 p.m.

    Там все работает. Я уже поборол эту проблемму. Теперь пытаюсь сделать непрырывное вещяния и прием. Порциями все ровно а вот в реалтайме беда

      Comments

      Only authorized users can post comments.
      Please, Log in or Sign up
      • Last comments
      • AK
        April 1, 2025, 11:41 a.m.
        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
      • Evgenii Legotckoi
        March 9, 2025, 9:02 p.m.
        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
      • VP
        March 9, 2025, 4:14 p.m.
        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
      • ИМ
        Nov. 22, 2024, 9:51 p.m.
        Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      • Evgenii Legotckoi
        Oct. 31, 2024, 11:37 p.m.
        Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup