Я новичок в программировании сокетов и 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;
}