而且这个缓冲区的长度我们可以设置。
我的问题是,我如何知道:
1)在不调用 recv 的情况下, 当前接收缓冲区中,有多少数据.
2)当前发送缓冲区中还有多少数据
谢谢
6 个解决方案
#1
从来没听过有获取这个的方法。同问。
#2
1)在不调用 recv 的情况下, 当前接收缓冲区中,有多少数据.
这个应该可以使用MSG_PEEK来获取。例如:
recv(socket_, buf, size, MSG_PEEK);
你可以试一下。
这个应该可以使用MSG_PEEK来获取。例如:
recv(socket_, buf, size, MSG_PEEK);
你可以试一下。
#3
++
#4
如果在recv的时候,flag字段设置了MSG_PEEK,则读取数据包的时候,不会把该数据包从缓存队列中删除;下次读取时还是这个数据包。
#5
1, 标准做法是ioctl(fd, FIONREAD, &nbytes);
2, 标准做法是ioctl(fd, FIONWRITE, &nbytes);
2, 标准做法是ioctl(fd, FIONWRITE, &nbytes);
#6
学习了。
#1
从来没听过有获取这个的方法。同问。
#2
1)在不调用 recv 的情况下, 当前接收缓冲区中,有多少数据.
这个应该可以使用MSG_PEEK来获取。例如:
recv(socket_, buf, size, MSG_PEEK);
你可以试一下。
这个应该可以使用MSG_PEEK来获取。例如:
recv(socket_, buf, size, MSG_PEEK);
你可以试一下。
#3
++
#4
如果在recv的时候,flag字段设置了MSG_PEEK,则读取数据包的时候,不会把该数据包从缓存队列中删除;下次读取时还是这个数据包。
#5
1, 标准做法是ioctl(fd, FIONREAD, &nbytes);
2, 标准做法是ioctl(fd, FIONWRITE, &nbytes);
2, 标准做法是ioctl(fd, FIONWRITE, &nbytes);
#6
学习了。