我有一个问题,我绕过函数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);
}
谢谢!
答案 0 :(得分:5)
问题是strlen()
没有那么有用。您无法通过将其中的任何内容解释为字符串来判断缓冲区的长度。套接字可以发送和接收二进制数据。尚未初始化的缓冲区可能包含任何内容。
buff[1]
答案 1 :(得分:1)
len参数是您需要提供的。您应该为缓冲区参数分配内存,并告诉您使用len参数进行了多少分配