Как прослушать http-запрос из браузера на прокси-сервере - PullRequest
0 голосов
/ 10 мая 2019

Я создаю свой собственный прокси-сервер.Но я не знаю, как слушать браузер.Кроме того, у меня есть несколько вопросов:

  1. Нужно ли мне прослушивать запрос из браузера?
  2. Нужно ли отображать полученный контент в браузере или просто печатать все HTML-теги вэкран консоли?

Я думаю, что при работе каждого прокси-сервера моя программа получит запрос от клиента (браузера), перенаправит его на веб-сервер, затем получит содержимое с сервера и, наконец, отправит клиенту.

   #pragma comment(lib, "Ws2_32.lib")

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <sys/types.h>
#include <iostream>
#include <fcntl.h>
#include <WS2tcpip.h>
#include <sys/stat.h>
#include <io.h>
#include <process.h> /* for getpid() and the exec..() family */
#include <direct.h> 
using namespace std;
bool checkSubString(char *str, char*substr)
{
    if (strstr(str, substr) != NULL)
    {
        return true;
    }
    return false;
}
int main()
{
    WSADATA wsData;
    WORD ver = MAKEWORD(2, 2);
    int wsOK = WSAStartup(ver, &wsData);

    if (wsOK != 0)
    {
        cerr << "cant init winsock" << endl; return 0;
    }

    char message[1024];
    int sockcheck = 0;
    sockaddr_in server_input_addr;

    memset(&server_input_addr, '0', sizeof(server_input_addr));
    memset(&message, '0', sizeof(message));
    sockcheck = socket(AF_INET, SOCK_STREAM, 0);
    if (sockcheck < 0)
    {
        cerr << "Error while creating socket!!!\n";
        return 0;
    }

    server_input_addr.sin_family = AF_INET;
    server_input_addr.sin_addr.S_un.S_addr = INADDR_ANY;
    server_input_addr.sin_port = htons(8888);
    bind(sockcheck, (sockaddr*)&server_input_addr, sizeof(server_input_addr));
    listen(sockcheck, 5);
    int connFd = 0;
    int n = 0;
    int client_length = sizeof(server_input_addr);
    while (1) {

        connFd = accept(sockcheck, (sockaddr*)&server_input_addr, &client_length);
        if (connFd < 0)
        {
            cerr << "\nError in accepting message from browser"; return 0;
        }
        n = _read(connFd, message, 1023);
        if (n > 0)
        {
            cerr << "ERROR reading from socket\n";
        }
        _write(connFd, "Message received", 15);
        _close(connFd);
    }
    cout << "\nSuccess!!!\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...