gpt4 book ai didi

c - recv C 代码套接字中的奇怪数据

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:42 26 4
gpt4 key购买 nike

我很困惑,因为我的 GET 请求代码正在运行,但它给了我一些额外的数据。

recv 函数正在获取一些稀有字节。

代码如下:

send(Socket, request, strlen(request), 0);
char *ptr = (char*)calloc(sizeof(char), RECV_LENGTH);
char *ptr2 = NULL;
size_t len_resp_total = 0;
int nDataLength;
int i = 0;
while ((nDataLength = recv(Socket, ptr, RECV_LENGTH, 0)) > 0){
printf("\n%s\n", ptr);
if (i > 0){ //prepare in case that the response is bigger than RECV_LENGTH bytes
len_resp_total += nDataLength;
printf("%p apunta a %d len total: %d e i vale: %d\n", ptr2, *ptr2, len_resp_total, i);
system("pause");
ptr2 = (char*)realloc(ptr2, len_resp_total+1);
if (ptr2==NULL){
printf("Some error reallocating memory\n");
return ERROR;
}
else{
memcpy(ptr2 + len_resp_total - nDataLength, ptr, nDataLength);
ptr2[len_resp_total] = '\0';
i++;
}
}
else{
len_resp_total += nDataLength;
ptr2 = (char*)realloc(ptr2, len_resp_total);
memcpy(ptr2, ptr, nDataLength);
ptr2[len_resp_total] = '\0';
i++;
}
}

我正在向这个网站发出 GET 请求:http://pastebin.com/raw.php?i=8Lq1aKGn

我在这里粘贴了我得到的回复:http://pastebin.com/RuhxKtXi .如您所见,第 14、50 和 69 行中有一个奇怪的值。

那是什么?

最佳答案

在 pastebin 中看到“Transfer-Encoding: chunked”,这意味着内容以 chucks 的形式传输。第 14 行 50 和 69 上的位是每个 block 长度的十六进制值。每个 block 都是该长度加上 2 个字符 (\r\n)。每个大小都以十六进制指定,后跟\r\n。

表示有1e0d个字节,然后是ed5个字节,然后是0个字节。

1e0d\r\n
[1e0d bytes of content here]\r\n
ed5\r\n
[ed5 bytes of content here]\r\n
0\r\n
[no content here]\r\n

参见:http://en.wikipedia.org/wiki/Chunked_transfer_encoding

关于c - recv C 代码套接字中的奇怪数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com