Я пишу консольное приложение с использованием C++ с сокетами. Мне нужно получить ответ не в массив символов, а в строку. Проблема в том, что я не знаю, как это сделать. Кто-то знает ответ? Спасибо всем.Как получить ответ сервера в строковую переменную с помощью C++?
Теперь я этот код:
char buffer[1000000];
int nDataLength;
while ((nDataLength = recv(Socket, buffer, 1000000, 0)) > 0) {
int i = 0;
while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
cout << buffer[i];
i += 1;
}
}
Мне нужно перевести буфер в строку перед тем, чтобы получить данные, потому что, если я использую массив символов буфер не большой, чтобы от чего прийти хранить entaire результат и если я увеличить размер, Visuale Студия показать мне ошибку при инициализации сокета
Я использую:
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
cout << "WSAStartup failed.\n";
system("pause");
return 1;
}
SOCKET Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct hostent *host;
host = gethostbyname("www.site.com");
SOCKADDR_IN SockAddr;
SockAddr.sin_port = htons(80);
SockAddr.sin_family = AF_INET;
SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
Это то, что мне нужно, чтобы сохранить ответ в строке, но: Как я могу это сделать?
вы получаете +1 от меня за то, что вы создали полный рабочий пример с ожидаемыми результатами; даже если вы совершили кардинальный грех, используя raw new/delete вместо интеллектуальных указателей ... По какой-то причине OP, похоже, хочет удалить пустое пространство из своих результатов. –
@Software_Designer работает над вашим кодом, но если я вставляю путь, чтобы получить всю страницу, страница не приходит. Я говорю это: 'strcpy (getHttp," GET/cerca? Q = pasta HTTP/1.1 \ r \ nHost: ") ; ' –