Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
ch2020
1 / 1 / 0
Регистрация: 25.02.2017
Сообщений: 43
1

Как в qt слушать http порт и принимать GET или POST запрос?

08.03.2017, 05:23. Просмотров 368. Ответов 2
Метки нет (Все метки)

Как в qt слушать http порт и принимать GET или POST запрос?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2017, 05:23
Ответы с готовыми решениями:

Прослушивание порта, Слушать сетевой порт на входящие данные
Здравствуйте. Подскажите пожалуйста. Возможно ли как то с помощью Qt слушать...

Слушать http запрос с 8080 порта, вместо 80
Как в конфиге оформить, дабы сервер слушал http запрос с 8080 порта,...

Http POST запрос, как правильно написать
Добрый день, мне нужно отправить данные на сервер, посредством http post...

Как в командной строке браузера послать http Запрос на определенный порт сервера?
Добрый вечер. Мне нужно из браузера послать hhtp Запрос на адрес...

Как передать переменные через http.Send (post запрос)
Здравствуйте уважаемые форумчане! Имеется макрос для передачи данных в php...

2
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,993
Завершенные тесты: 1
08.03.2017, 06:59 2
Ну можно использовать QTcpServer. И реализовать над ним протокол Http.
Http порт это tcp:80
1
ch2020
1 / 1 / 0
Регистрация: 25.02.2017
Сообщений: 43
08.03.2017, 08:21  [ТС] 3
Сделал слушает порт 33333[CPPQT]
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
 connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_starting_clicked()));
 connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(on_stoping_clicked()));
int server_status = 0;
}
 
 
 
void MainWindow::on_starting_clicked()
{
    QTcpServer * tcpServer = new QTcpServer(this);
    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newuser()));
    if (!tcpServer->listen(QHostAddress::Any, 33333) && server_status==0) {
        qDebug() <<  QObject::tr("Unable to start the server: %1.").arg(tcpServer->errorString());
        ui->textEdit->append(tcpServer->errorString());
    } else {
        server_status=1;
        qDebug() << tcpServer->isListening() << "TCPSocket listen on port";
        ui->textEdit->append(QString::fromUtf8("Сервер запущен!"));
        qDebug() << QString::fromUtf8("Сервер запущен!");
    }
}
 
void MainWindow::on_stoping_clicked()
{
    if(server_status==1){
        foreach(int i,SClients.keys()){
            QTextStream os(SClients[i]);
            os.setAutoDetectUnicode(true);
            os << QDateTime::currentDateTime().toString() << "\n";
            SClients[i]->close();
            SClients.remove(i);
        }
        tcpServer->close();
        ui->textEdit->append(QString::fromUtf8("Сервер остановлен!"));
        qDebug() << QString::fromUtf8("Сервер остановлен!");
        server_status=0;
    }
}
/CPPQT]


По кнопке в программе запускается сервер, в ubuntu проверяю командой в консоли командой watch n -1 "netstat -tuwapn" и все работает сервер слушает порт.

Как сюда добавить получение get запроса в программу?

Добавлено через 22 минуты
в общем вот исходный код того, что мне нужно было.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
 
int server_status=0;
int idusersocs=0;
QTcpServer * tcpServer;
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_starting_clicked()));
 connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(on_stoping_clicked()));
 
}
 
 
 
void MainWindow::on_starting_clicked()
{
      tcpServer = new QTcpServer(this);
    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newuser()));
    if (!tcpServer->listen(QHostAddress::Any, 33333) && server_status==0) {
        qDebug() <<  QObject::tr("Unable to start the server: %1.").arg(tcpServer->errorString());
        ui->textEdit->append(tcpServer->errorString());
    } else {
        server_status=1;
        qDebug() << tcpServer->isListening() << "TCPSocket listen on port";
        ui->textEdit->append(QString::fromUtf8("Сервер запущен!"));
        qDebug() << QString::fromUtf8("Сервер запущен!");
    }
}
 
void MainWindow::on_stoping_clicked()
{
    if(server_status==1){
        foreach(int i,SClients.keys()){
            QTextStream os(SClients[i]);
            os.setAutoDetectUnicode(true);
            os << QDateTime::currentDateTime().toString() << "\n";
            SClients[i]->close();
            SClients.remove(i);
        }
        tcpServer->close();
        ui->textEdit->append(QString::fromUtf8("Сервер остановлен!"));
        qDebug() << QString::fromUtf8("Сервер остановлен!");
        server_status=0;
    }
}
 
 
void MainWindow::newuser()
{
    if(server_status==1){
        qDebug() << QString::fromUtf8("У нас новое соединение!");
        ui->textEdit->append(QString::fromUtf8("У нас новое соединение!"));
        qDebug() << "test 1";
        QTcpSocket* clientSocket=tcpServer->nextPendingConnection();
        qDebug() << "test 2";
        idusersocs=clientSocket->socketDescriptor();
 
        SClients[idusersocs]=clientSocket;
        connect(SClients[idusersocs],SIGNAL(readyRead()),this, SLOT(slotReadClient()));
    }
}
 
void MainWindow::slotReadClient()
{
    QTcpSocket* clientSocket = (QTcpSocket*)sender();
    int idusersocs=clientSocket->socketDescriptor();
    QTextStream os(clientSocket);
    os.setAutoDetectUnicode(true);
    os << "HTTP/1.0 200 Ok\r\n"
          "Content-Type: text/html; charset="utf-8"\r\n"
          "\r\n"
          "<h1>Nothing to see here</h1>\n"
          << QDateTime::currentDateTime().toString() << "\n";
    ui->textEdit->append("ReadClient:"+clientSocket->readAll()+"\n\r");
    // Если нужно закрыть сокет
    clientSocket->close();
    //SClients.remove(idusersocs);
}
MainWindow::~MainWindow()
{
    delete ui;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2017, 08:21

Как на с++(юникс) отправить http post запрос без сторонних библиотек
Ответ сервера не важен, главное - послать пост-запрос. boost, libcurl и прочее...

Как слушать порт сайта с LotusScript ?
Есть кнопка на LotusScript , которая обращается на http://127.0.0.1:9999/ Если...

Как слушать определенный порт с помощью сокета
Создал сокет на прием всех всех IP кадров, которые приходят на порт 1501 с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru