gpt4 book ai didi

python - python 中的 socket 方法 recv(bufsize) 和 c 中的 recv(char *buf) 中的真正缓冲区是什么?

转载 作者:可可西里 更新时间:2023-11-01 02:45:07 26 4
gpt4 key购买 nike

在python中,方法是:

socket.recv(bufsize[, flags])

在C中,方法是:

int recv( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags)

这两个方法这里的buffer是什么?

如果我创建一个 TCP 套接字,我认为它是 receive window sizereceive buffer。但是当我捕获测试 tcp 消息时,我发现我错了。

我猜缓冲区是套接字缓冲区。当 tcp 消息到达并首先进入 tcp 的缓冲区(在传输层中)时。然后 tcp 的接收窗口开始滑动接收数据,如果消息正确,则将它们传递到 socket buffer(上面两种方法中的真实缓冲区)。最后将数据传递给应用。

我说得对吗?

最佳答案

这里有两种类型的缓冲区:

  1. recv() 中提到的缓冲区位于运行进程内存中的用户空间。
  2. 内核还在内核空间中维护一个缓冲区。当您调用 recv() 时,数据将从内核空间复制到用户空间。

关于python - python 中的 socket 方法 recv(bufsize) 和 c 中的 recv(char *buf) 中的真正缓冲区是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com