日期:2014-05-16  浏览次数:20758 次

关于套接字缓冲区
我们知道,对每个套接字,系统都会分配一个发送缓冲区和接收缓冲区,

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

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

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

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


      谢谢

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

这个应该可以使用MSG_PEEK来获取。例如:
recv(socket_, buf, size, MSG_PEEK);

你可以试一下。
------解决方案--------------------
1, 标准做法是ioctl(fd, FIONREAD, &nbytes);
2, 标准做法是ioctl(fd, FIONWRITE, &nbytes);