Почему он не выводит ответы? - PullRequest
0 голосов
/ 01 декабря 2018

Я новичок в программировании сокетов и C ++.Следующий код работает нормально, но когда я его запускаю, он запрашивает у меня доступ к веб-сайту, и после ввода веб-сайта в cmd ответное сообщение не выводится.Вместо этого он будет загружаться в течение нескольких секунд, а затем появится сообщение «Нажмите любую клавишу, чтобы закрыть».что я делаю не так ??

#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#include <string>

// Need to link with Ws2_32.lib, Mswsock.lib, and Advapi32.lib
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")

int main()
{
    WSADATA wsaData;
    // Initialize Winsock
    WSAStartup(MAKEWORD(2, 2), &wsaData);

    //Create a SOCKET for connecting to server
    SOCKET clientSocket = socket(AF_UNSPEC, SOCK_STREAM, IPPROTO_TCP);

    //prompts the user to enter a website.
    std::string webadd;
    std::cout << "Enter a website: \n";
    std::cin >> webadd;

    //finds the IP address of the website.
    addrinfo af;
    addrinfo* result;
    ZeroMemory(&af, sizeof(af));
    af.ai_family = AF_UNSPEC;
    af.ai_socktype = SOCK_STREAM;
    af.ai_protocol = IPPROTO_TCP;

    getaddrinfo(webadd.c_str(), "443", &af, &result);

    //  connects to this website.
    connect(clientSocket, result->ai_addr, result->ai_addrlen);

    //sends a valid html request to this website.
    std::string sendbuf = "GET / HTTP/1.1\nhost: " + webadd + "\n\n";
    send(clientSocket, sendbuf.c_str(), sendbuf.length(), 0);

    int iResult;
    char recvbuf[1024];
    // receive data
    iResult = recv(clientSocket, recvbuf, sizeof(recvbuf),0);
    if (iResult > 0)
        std::cout << "Responce from server:\n" << recvbuf << std::endl;
    else if(iResult == 0)
        std::cout << "Connection closed\n";
    else
        std::cout << "recv failed with error: " << WSAGetLastError() << std::endl;

    // close connection and cleanup
    closesocket(clientSocket);
    WSACleanup();   


system("pause");
return 0;

}

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