查看socket缓冲区数据_什么是socket缓冲区?

Socket的发送和接收涉及缓冲区的使用。发送数据时,数据首先存入Socket缓冲区,等待操作系统调度发送;接收数据时,数据进入缓冲区直到被应用读取。可以通过Linux的netstat命令查看Socket的接收缓冲RecvQ和发送缓冲SendQ的状态。当网络状况不佳或应用程序处理不及时,缓冲区可能会堆积数据。应用程序可以根据需求调整缓冲区大小。
摘要由CSDN通过智能技术生成
87e4b51a678db30aa6a8982868d6685d.png

Socket 就是发送和接收网络数据,Socket 有发送缓冲也有接收缓冲,这些缓冲区有什么作用?

1、什么是Socket缓冲区?

熟悉 Socket 的读者都知道,Socket 的发送和接收,就是调用 send 和 recv 函数。

实际操作中,我们将要发送的数据 buffer,送给 send 函数,然后 send 就会返回成功或者失败,那么,send 什么时候返回成功呢?是发送到对端函数才返回吗?答案是否定的。(注意:Socket 有同步和异步,本文主要讨论 Socket 缓冲区,不深究异步,都假定是同步)

实际上呢,Socket 有一个缓冲区,send 的数据 buffer,它会先发到缓冲区里面,然后由操作系统去调度发送。所以,send 返回成功,仅仅只是说明,数据放到缓冲区成功了,不代表对端接收了,更不代表对端应用程序正确处理了。所以我们会看到缓冲区不满的时候,send 函数很快就返回了,而缓冲区满的时候,send 函数会阻塞直到超时返回错误。recv 函数同理,实际上是从缓冲区获取数据,发过来的网络数据,系统将会放到缓冲区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值