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

Rom*_*man -1 c++ sockets winapi buffer

我有一个问题,我绕道功能recv(ws2_32.dll)并尝试读取数据.我得到leng parametr - 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);
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Dig*_*oss 6

问题是strlen()那种方式没用.您无法通过将其中的任何内容解释为字符串来判断缓冲区的长度.套接字可以发送和接收二进制数据.尚未初始化的缓冲区可能包含任何内容.

恰好是0字节 buff[1]