recv函数,我不明白它是如何工作的

问题描述 投票:0回答:1

我是初学者。该函数请求以下参数:

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++ pointers reference winsock2
1个回答
0
投票

C 风格数组衰变 变成指向其第一个元素的指针。

© www.soinside.com 2019 - 2024. All rights reserved.