【发布时间】:2018-03-28 16:39:43
【问题描述】:
在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(上述两种方法中的真正缓冲区)。最后将数据传递到应用程序。
我说的对吗?
【问题讨论】:
-
C的函数对应Python的
recv_into -
@AnttiHaapala 很棒,但是 recv() 和 recv_into() 有什么区别?一个用系统缓冲区,一个用自己创建的缓冲区?