-1

我有一个问题,我绕过函数 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);
}

谢谢!

4

2 回答 2

6

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

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

于 2012-05-20T18:17:30.757 回答
1

len 参数是您需要提供的。您应该为缓冲区参数分配内存并告诉您使用 len 参数分配了多少内存

于 2012-05-20T18:19:39.773 回答