【发布时间】:2015-10-02 01:55:24
【问题描述】:
我通过发出 http 请求并读取响应标头来获取一些带有套接字的网站,如下所示:
char buffer[1000];
while ((bytesReceived = tcpSocket.Receive(buffer, 1000-1)) > 0)
{
buffer[bytesReceived] = '\0';
myFile << buffer;
memset(buffer, 0, 1000);
}
这是接收函数:
int fsx::TcpSocket::Receive(char* _buffer, size_t _length)
{
int iResult = recv(this->socketHandler, _buffer, _length, 0);
if (iResult >= 0)
{
return iResult;
}
else
{
return SOCKET_ERROR;
}
}
我得到的这部分响应:
HTTP/1.1 200 OK
Date: Tue, 22 Sep 2015 10:46:10 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Set-Cookie: __cfduid=d01e9db42c5332c444d5105c2cd9fd9e01442918769; expires=Wed, 21-Sep-16 10:46:09 GMT; path=/; domain=.stackoverflow.com; HttpOnly
Cache-Control: public, no-cache="Set-Cookie", max-age=60
Cf-Railgun: 2b57bd3274 5.38 0.314316 0030 3350
Expires: Tue, 22 Sep 2015 10:47:09 GMT
Last-Modified: Tue, 22 Sep 2015 10:46:09 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
X-Request-Guid: 9921fd42-6fd5-4a34-a839-c87d26b2f39a
Set-Cookie: prov=e6796729-38a7-4754-af17-96349ae78010; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
Server: cloudflare-nginx
CF-RAY: 229d6ca79fef05b5-ARN
3b19 //<------------- WHAT THE HECK IS THIS?
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/QAPage">
<head>
如您所见,我在响应标题的末尾得到了这个字符“3b19”,那是什么?每次都是一组不同的字符,我似乎无法在以下位置找到它们:http://www.stackoverflow.com/questions/12691882/how-to-send-and-receive-data-socket-tcp-c-c 这是我正在获取的页面。
【问题讨论】:
-
奇怪。你可以在你的浏览器和目标服务器之间用嗅探器做类似的事情,看看它是否以同样的方式捕获了 nginx 响应?
-
是否有任何理由使用套接字来执行 HTTP 请求而不是高级库(例如 cURL、WinHTTP、WinINet 等)?