在python中,方法是:
socket.recv(bufsize[, flags])
在C中,方法是:
int recv( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags)
这两种方法的缓冲区是什么?
如果我创建一个receive window size
套接字,我认为是receive buffer
或TCP
。但是当我捕获测试tcp消息时,我发现我错了。
我猜缓冲区是套接字缓冲区。当tcp消息到来时,首先进入tcp's buffer
(在传输层中)。然后,如果消息正确,则tcp的接收窗口开始滑动以接收数据并将它们传送到socket buffer
(上述两种方法中的真实缓冲区)。最后,数据将传递给app。
我是对的吗?
答案 0 :(得分:4)
这里有两种类型的缓冲区:
recv()
中提到的缓冲区位于正在运行的进程内存中的用户空间中。recv()
时,数据将从内核空间复制到用户空间。