Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 缓冲区长度错误(const char FAR*)_C++_Winapi_Sockets_Buffer - Fatal编程技术网

C++ 缓冲区长度错误(const char FAR*)

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

我遇到了一个问题,我绕过了函数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, buff, leng, flags);
}

谢谢

问题是
strlen()
那样没有用。不能通过将缓冲区中的任何内容解释为字符串来判断缓冲区的长度。套接字可以发送和接收二进制数据。甚至尚未初始化的缓冲区可能包含任何内容


恰好在buff[1]处有一个0字节

len参数是您需要提供的。您应该为buffer参数分配内存,并告诉我们您对len参数进行了多少分配

您需要向我们展示更多代码。此外,FAR修饰语已经过时了大约15年;帮你自己一个忙,把它删除。sizeof(char)==1