c++ - 使用套接字编程的奇怪 HTTP 响应

标签 c++ sockets http

我一直在尝试使用套接字编程来实现持久化 HTTP。建立连接后,我开始按顺序请求每个对象。但是一旦我获得了第一个对象,我就开始收到第二个对象的奇怪 HTTP 响应(在 header 中)

sprintf(temp_buffer, "HEAD %s HTTP/1.1\r\n", objURL);
strcpy(req_buffer, temp_buffer);
sprintf(temp_buffer, "HOST: %s\r\n", host);
strcat(req_buffer, temp_buffer);
sprintf(temp_buffer, "\r\n");
strcat(req_buffer, temp_buffer);  

if (send(sockId, req_buffer, strlen(req_buffer), 0) < 0) 
{
    printf("send failed\n");
    return false;
}

char receiveBuffer[len];

int isRecvd = recv(sockId, receiveBuffer, sizeof(receiveBuffer), 0);

if (isRecvd < 0 ) 
{
    cout << "Cant recieve !!" << endl;
    return false;
}

//Now to extract info from the Response
cout << isRecvd<<"\n";
receiveBuffer[isRecvd] = '\0';
string response = receiveBuffer ;
cout<<"the response is "<<endl;
cout << response <<endl;

响应的 cout 语句给出如下内容: 响应是������vѴ��3��p。

最佳答案

也许您没有展示完整的代码,但您是否有可能没有完整阅读第一个响应?服务器将为您提供内容长度或分块响应,您需要确定在响应完成之前要读取多少内容。如果您确实正在读取固定数量的字节 len,那么您认为您的第二个响应可能只是第一个的更多内容。希望对您有所帮助。

关于c++ - 使用套接字编程的奇怪 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952276/

相关文章:

c++ - 默认定义的 move 构造函数上的 noexcept 规则是什么?

http - 你能解释一下分块编码吗?

c++ - 仅 OpenSSL BIO : single SSL_write broken in two SSL records with TLS 1. 0

java - HTTP 500 网站无法显示页面

java - Android VpnService 如何在打开 Socket 之前处理传入的数据包?

node.js - 限制事件驱动的 Nodejs HTTP 请求

javascript - 需要来自 Angular js 的跨源请求示例

c++ - omp 临界区后是否存在隐式 Barrier

C++ Qt : undefined reference to `_imp___ZN12QApplicationC1ERiPPci'

c++ - Android NDK pthread上下文切换