我是初学者。该函数请求以下参数:
int recv(
[in] SOCKET s,
[out] char *buf,
[in] int len,
[in] int flags
);
第二个参数要求我传递缓冲区的地址,但在我正在观看的视频中,那家伙按值传递缓冲区,据我所知,通过这样做,该函数将无法修改buffer,但由于某种原因它仍然接受该参数。为什么?
这是视频:https://www.youtube.com/watch?v=VlUO6ERf1TQ&t=361s
这是他写的一段代码:
int bytes = 0;
while (true)
{
//Accept client request
new_wsocket = accept(wsocket, (SOCKADDR *)&server, &server_len);
if (new_wsocket == INVALID_SOCKET)
{
std::cout << "The socket is invalid";
}
//Read request
char buff[30720] = { 0 };
bytes = recv(new_wsocket, buff, BUFFER_SIZE, 0);
}
C 风格数组衰变 变成指向其第一个元素的指针。