关于套接字缓冲区

w20120125 2012-12-21 09:29:01
我们知道,对每个套接字,系统都会分配一个发送缓冲区和接收缓冲区,

而且这个缓冲区的长度我们可以设置。

我的问题是,我如何知道:

1)在不调用 recv 的情况下, 当前接收缓冲区中,有多少数据.

2)当前发送缓冲区中还有多少数据


谢谢
...全文
260 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
program2050 2012-12-21
  • 打赏
  • 举报
回复
引用 5 楼 qq120848369 的回复:
1, 标准做法是ioctl(fd, FIONREAD, &nbytes); 2, 标准做法是ioctl(fd, FIONWRITE, &nbytes);
学习了。
假正经的班长 2012-12-21
  • 打赏
  • 举报
回复
从来没听过有获取这个的方法。同问。
qq120848369 2012-12-21
  • 打赏
  • 举报
回复
1, 标准做法是ioctl(fd, FIONREAD, &nbytes); 2, 标准做法是ioctl(fd, FIONWRITE, &nbytes);
恨天低 2012-12-21
  • 打赏
  • 举报
回复
如果在recv的时候,flag字段设置了MSG_PEEK,则读取数据包的时候,不会把该数据包从缓存队列中删除;下次读取时还是这个数据包。
windman521 2012-12-21
  • 打赏
  • 举报
回复
引用 2 楼 program2050 的回复:
1)在不调用 recv 的情况下, 当前接收缓冲区中,有多少数据. 这个应该可以使用MSG_PEEK来获取。例如: recv(socket_, buf, size, MSG_PEEK); 你可以试一下。
++
program2050 2012-12-21
  • 打赏
  • 举报
回复
1)在不调用 recv 的情况下, 当前接收缓冲区中,有多少数据. 这个应该可以使用MSG_PEEK来获取。例如: recv(socket_, buf, size, MSG_PEEK); 你可以试一下。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧