recv() 返回 WSAENOBUFS ,有人碰到过么?

everandforever 2003-01-23 01:41:03
使用基于连接的 CAsyncSocket. 我在 局域网 上发送一系列的 40-50字节 的数据包, 大约 1 秒发送30个包.发送方式是先将数据存在缓冲区中,然后调用 AsyncSelect(FD_WRITE), 在 OnSend() 中发送. 接收端在 OnReceive() 中调用 Receive() ( Receive()内部是调用 recv() )接收, 但是过一段时间 Receive() 就会返回错误 WSAENOBUFS .很是奇怪,我在网上搜到一个帖子( http://www.kx.com/listbox/k/msg05869.html ),但是没有提出解决方案. 我想问一下, 这里有人碰到过么.
...全文
11 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
everandforever 2003-02-01
TO Richuen22(更深蓝): 是随存随发,只要网络不忙就发。
回复
Richuen22 2003-01-27
“发送方式是先将数据存在缓冲区中”是存了30个包后发还是等缓冲区满后再发?偶现在还未深入网络,不要见怪!
回复
bigbook2000 2003-01-26
错误代码10055

你的申请的buff的长度小于你读取数据的长度
回复
shitalone 2003-01-26
同意。
recv函数中有参数是用来指明recv的字节的个数的。难道你设的该参数的大于你的buffer的长度。
回复
mengxihe 2003-01-26
gz
回复
everandforever 2003-01-26
TO shitalone(西特龙) :
应该不是我自己的BUFFER太小,RECV又不会去算BUFFER有多大(也不可能算得到)。
我调用 SETSOCKOPT 把系统的接收缓冲区从 8192 调整到了 65536 跑了2天,感觉好了一些。但我还想继续跑几天看看。
回复
everandforever 2003-01-23
我试试.
回复
aben456 2003-01-23
recv了多少字节出现了这种情况,有可能是满了
回复
zfr 2003-01-23
你的buffer满了,把buffer开大些,及时把数据读出来
回复
发动态
发帖子
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
社区公告
暂无公告