【发布时间】:2013-07-18 17:19:24
【问题描述】:
我正在逐包读取套接字数据包并写入另一个缓冲区以组合所有数据。
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);
}
取消注释已注释的代码可解决问题。为什么我在注释掉代码时会收到损坏的数据?
【问题讨论】:
-
你确定
BufferRead是合法的吗?您是否收到来自WSARecv的错误?你WSAInitialize(或其他)吗?
标签: c++ c sockets visual-c++ mfc