[英]What is the actual impact of calling socket.recv with a bufsize that is not a power of 2?
[英]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 size
或receive buffer
。 但是,当我捕获测试tcp消息时,我发现我错了。
我猜缓冲区是套接字缓冲区。 当tcp消息到达时,首先进入tcp's buffer
(在传输层中)。 然后,如果消息正确,则tcp的接收窗口开始滑动以接收数据,并将其传递到socket buffer
(上述两种方法中的实际缓冲区)。 最后,数据被传送到应用程序。
我对吗?
这里有两种类型的缓冲区:
recv()
提到的缓冲区位于用户空间中,该用户空间位于正在运行的进程的内存中。 recv()
,数据将从内核空间复制到用户空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.