Получите данные с веб-сервера и отправьте их клиенту c ++ - PullRequest
0 голосов
/ 11 февраля 2011

Я пытаюсь получить некоторые данные с веб-сервера в качестве прокси-сервера, а затем отправил данные клиенту.
Веб-сервер -> Я -> Клиент

Это мой основной код:

int main()
{
    Initialize();
    ServerSocket s;
    s.Bind();
    s.Listen();
    while(true)
    {
        TCPSocket* sock = s.Accept();

        ClientSocket client;
        string addr = handle.getAddress();
        short prt = handle.getPort();

        client.Connect(addr, prt);
        char data[5000];
        client.Send("GET /index.html HTTP/1.0\r\n\r\n", 28) ;
        while(true)
        {
            int numbytes=client.Recv(data, 5000);
            if(numbytes == 0)
            {
                break;
            }
            cout <<"Received from web server: " << numbytes << endl;
            int numbytes2 = sock->Send(data, numbytes);
            cout << "Sent to client: " << numbytes2 << endl;
        }
        client.Close();
    }
    s.Close();
    return 0;
}

Но когда я просматриваю сеть, скажем, google.com, я получаю «302 Перемещено Документ перемещен сюда». На каждом сайте я веду себя по-разному, но сайт не загружается. Я делаю что-то не так, когда отправляю и получаю байты? Спасибо заранее.

1 Ответ

1 голос
/ 11 февраля 2011

Ваш код работает просто отлично. Просто современные веб-серверы не позволяют вам подключаться без надлежащей аутентификации, используя user-agen, заголовки и т. Д. Попробуйте следующие команды в вашей оболочке.

telnet yourserver.com 80
<some messages from server>

GET /index.html HTTP/1.0

Если ответ совпадает с тем, что вы получаете, используя программу на C ++, тогда в основном все, что вам нужно сделать, - это отправить больше информации для правильной аутентификации.

  user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
  headers = {'User-Agent': user_agent}

И отправьте эти данные вместе с вашим GET-запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...