当前位置: 技术问答>linux和unix
recv 接收 ,接收空间不够大, 可以通过什么知道?
来源: 互联网 发布时间:2016-05-22
本文导语: 比如,有3000个字节send来,recv接收的buf (Buffer for the incoming data) 总长才2000,那么通过什么知道? 我试了下,是返回-1,errno是0??怎么才能知道接收空间不够? | 這個貌似在源端很難...
比如,有3000个字节send来,recv接收的buf (Buffer for the incoming data) 总长才2000,那么通过什么知道?
我试了下,是返回-1,errno是0??怎么才能知道接收空间不够?
我试了下,是返回-1,errno是0??怎么才能知道接收空间不够?
|
這個貌似在源端很難實現,比較靠譜的方法是recv端自己來監視緩衝區的大小,當緩衝區滿了的時候,發消息通
知對端。在TCP包裡面有個Window Size字段就是用來做這個的
知對端。在TCP包裡面有個Window Size字段就是用來做這個的
|
对于数据报类套接口,队列中第一个数据报中的数据被解包,但最多不超过缓冲区的大小。如果数据报大于缓冲区,那么缓冲区中只有数据报的前面部分,其他的数据都丢失了,并且recv()函数返回错误宏。
关键是你要测大小,这个貌似不行吧。
关键是你要测大小,这个貌似不行吧。
|
我知道,recv有一个默认buffer长度的!我不记了!
不过你可以通过setsockopt来设置recv的buffer大小的!
不过你可以通过setsockopt来设置recv的buffer大小的!
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。