私は、ソケットでC++を使ってコンソールアプリケーションを書いています。私は文字列ではなく文字列に応答を受け取る必要があります。問題は私がそれをやる方法を知らないことです。誰かが答えを知っていますか?ありがとうございます。C++を使用して文字列変数にサーバーの応答を受け取る方法は?
今、私はこのコードをした:私はchar型の配列を使用する場合、バッファはentaireを格納するenought大きくないので
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;
}
}
私は、データを受信する前に、文字列にバッファを翻訳する必要がありますその結果、私はサイズを増やす場合、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を得ています。スマートポインタの代わりに生のnew/deleteを使って枢機卿の罪を犯したとしても...何らかの理由で、OPは彼の結果から空白を削除したいようです。 –
@ Software_Designerあなたのコードは動作しますが、ページ全体を取得するためにパスを挿入した場合、ページ全体が届かない..私はこれを言う: 'strcpy(getHttp、" GET/cerca?q = pasta HTTP/1.1 \ r \ nHost: ") ; ' –