C++ 缓冲区长度错误(const char FAR*)
我遇到了一个问题,我绕过了函数recv(ws2_32.dll)并试图读取数据。我得到的是leng参数-17,但在实际缓冲区中只有2字节的长度 我的代码:C++ 缓冲区长度错误(const char FAR*),c++,winapi,sockets,buffer,C++,Winapi,Sockets,Buffer,我遇到了一个问题,我绕过了函数recv(ws2_32.dll)并试图读取数据。我得到的是leng参数-17,但在实际缓冲区中只有2字节的长度 我的代码: int WINAPI OwnSend(SOCKET s, const char FAR *buff, int leng, int flags ) { //why 'leng'==17 and (sizeof(char) * strlen(buff) + 1) == 2? return pTrampolineSend(s, buf
int WINAPI OwnSend(SOCKET s, const char FAR *buff, int leng, int flags )
{
//why 'leng'==17 and (sizeof(char) * strlen(buff) + 1) == 2?
return pTrampolineSend(s, buff, leng, flags);
}
谢谢 问题是
strlen()
那样没有用。不能通过将缓冲区中的任何内容解释为字符串来判断缓冲区的长度。套接字可以发送和接收二进制数据。甚至尚未初始化的缓冲区可能包含任何内容
恰好在buff[1]处有一个0字节len参数是您需要提供的。您应该为buffer参数分配内存,并告诉我们您对len参数进行了多少分配您需要向我们展示更多代码。此外,FAR修饰语已经过时了大约15年;帮你自己一个忙,把它删除。sizeof(char)==1