首页 文章

TCP接收缓冲区

提问于
浏览
0

C代码中引用的缓冲区之间有什么区别

recvfrom(sock, buffer, 20, 0, (struct sockaddr *)&c_addr, &addr_size);

可以通过设置套接字选项来调整其大小的缓冲区(在C中,但我认为其他编程语言具有相同的套接字选项)?

我的困惑来自recvfrom代码中称为“缓冲区”的缓冲区,可以合理地称为接收缓冲区,它也是TCP中使用的缓冲区的名称 . 我想澄清一下,recvfrom代码中提到的缓冲区是一种不同的缓冲区,也许差别是什么 .

假设它们是不同的,就5层网络模型而言,第二类缓冲区基本上只适用于传输层,并且通常不可修改(除了能够在应用层更改其常规属性,如大小)?换句话说,TCP接收缓冲区中的数据是否被传递到recvfrom代码中名为“buffer”的缓冲区?

1 回答

  • 0

    您所指的接收缓冲区是OS中的内部缓冲区,其中在用户空间程序通过 recvrecvfrom 函数调用访问它之前存储传入数据 .

    这与上面代码中的 buffer 不同,因为它是一个应用程序缓冲区 .

    如果应用程序没有比操作系统接收数据包更快地读取数据包,则操作系统中的接收缓冲区将会满,并且数据包将被丢弃 .

相关问题