繁体   English   中英

python中的套接字方法recv(bufsize)和c中的recv(char * buf)中的实际缓冲区是什么?

[英]What is the real buffer in socket method recv(bufsize) in python and recv(char *buf) in c?

在python中,方法是:

socket.recv(bufsize[, flags])

在C中,方法是:

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

这两种方法的缓冲区是什么?

我以为这是我创建TCP套接字时的receive window sizereceive buffer 但是,当我捕获测试tcp消息时,我发现我错了。

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

我对吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM