找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6179|回复: 2

为什么 windows平台 recv 接收返回-1 错误号10035

[复制链接]
发表于 2011-8-4 14:03:19 | 显示全部楼层 |阅读模式
本帖最后由 maddreamw88 于 2011-8-5 10:10 编辑

请问  我的ace应用程序 在windows 平台 tcp 发送大数据包如1024 * 5 字节时 接收端调用 peer().recv(myRecv_->wr_ptr(), wantLen_);返回-1
错误号是10035 。
而同样代码 在linux平台 是ok的?
我  linux  和 windows 都是基于 ACE_Select_Reactor 实现的

我为了修改该错误,曾尝试如下修改,但没效果,不知道设置点不对呢还是别的原因,请问各位大侠有没碰到同样问题?
                              int nSocketBuffSize = 1024 * 64;
                        // 修改接收缓冲区
                        peer().set_option(SOL_SOCKET, SO_RCVBUF, &nSocketBuffSize, sizeof(int));
                        // 修改发送缓冲区
                        peer().set_option(SOL_SOCKET, SO_SNDBUF, &nSocketBuffSize, sizeof(int));
 楼主| 发表于 2011-8-4 17:04:11 | 显示全部楼层
本帖最后由 maddreamw88 于 2011-8-5 13:54 编辑

回复 1# maddreamw88

   我测试程序都是同样代码,包的发送频率都是100毫秒发送一次,
  1: linux平台之间的互发,  
      包大小1024 * 10  发送,接收都正常
  2: windows平台之间的互发
       发送包大小1024 * 4 没问题 ,但1024 * 5 就有问题,所谓的有问题就是接收端recv就返回-1了, 错误号10035(WSAEWOULDBLOCK)
  3:windows 和 linux 平台之间的互发
      linux作发送端,windows作接收端,发送包大小1024 字节 刚开始还能接收,但过了阵子 就接收返回-1了 错误号10035,
                                       若发送包大小是1024 * 2 字节,windows接收端马上 返回-1了,错误号10035

我现在把这个错误号忽略,程序接收发送貌似没影响,请问 忽略它 有什么影响没?怎么样才能避免掉这个错误号的产生?
发表于 2012-1-30 14:37:12 | 显示全部楼层
发送那么大的包并不好,这个错误是貌似收于底层的在原因引起的。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-23 16:03 , Processed in 0.023917 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表