gpt4 book ai didi

c++ - 在以下情况下从套接字读取数据已损坏?

转载 作者:行者123 更新时间:2023-11-30 17:49:40 25 4
gpt4 key购买 nike

我正在从套接字逐包读取数据,然后写入另一个缓冲区以组合所有数据。

BOOL _ReadPacket(PBYTE BufferRead, DWORD &Length, SOCKET Socket)
{
WSABUF Buffer;
DWORD Flags = 0;
int Result = 0;
FILE *file;
Buffer.buf = (char *)BufferRead;
Buffer.len = Length;
Flags = 0;
Result = WSARecv(Socket, &Buffer, 1, &Length, &Flags, NULL, NULL);

// if ((file=fopen("D:/test/test1/test1.txt","a+") ) != NULL)
//{
//UINT val = Buffer.len;
//fprintf(file, "%d\n", val);
//
//fflush(file);
//fclose(file);
//}
return(Result != SOCKET_ERROR);
}

取消注释代码可以解决问题。当我将代码注释掉时,为什么会得到损坏的数据?

最佳答案

WSARecv 的第四个参数应该是指向接收到的字节数的指针。但是,您将指针的地址传递给缓冲区的长度。

如果您传递的是指针,而不是指向指针的指针,那么这会很奇怪,但它应该可以正常工作(因为它不会损坏任何内容)。然而,就现在而言,它可能写在不应该写的地方。

简而言之:检查并修复第四个参数。

关于c++ - 在以下情况下从套接字读取数据已损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730052/

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