首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CAsyncSocket发送端WSAEWOULDBLOCK?解决方法

2012-03-17 
CAsyncSocket发送端WSAEWOULDBLOCK?1.我现在有两个进程,服务端频繁向客户端发送音频数据,大约每秒40KB;2.C

CAsyncSocket发送端WSAEWOULDBLOCK?
1.我现在有两个进程,服务端频繁向客户端发送音频数据,大约每秒40KB;

2.CAsyncSocket只尝试着设置过发送和接收缓冲区大小,1MB;

3.大概10到40分钟后,服务端发送的最后成功的最后一份数据,客户端就收不到了;之后发送端Send都会返回WSAEWOULDBLOCK,并且也不会触发OnSend;而客户端也收不到任何数据,包括我用SmartSniff查看的数据包和OnReceive;

疑问:
连接并没有断开,因为客户端还可以成功的向服务端发送数据,看其他帖子说可能发送缓冲区或接收缓冲区满了才返回WSAEWOULDBLOCK,但是我查看不到是哪个缓冲区满;因为OnSend没有触发过,而接收端又不触发OnReceive,我猜是发送缓冲区有问题;
我找不到具体哪里的问题了,请各位给些提示。

[解决办法]
不要设那么大的缓冲区,就这个程序而言对通讯没有帮助
你可以从程序里打印收到的报文序列比较发送和收到的报文
看看是客户端没有收完导致的,还是服务器端就发不出去
一般情况下是客户端没有收完数据引起的
看不到程序一般都是瞎猜猜
[解决办法]
客户端定时给个心跳包给服务器看看
[解决办法]

探讨
我找来找去,觉得可能是SOCKET的缓冲区有问题,可能是我太频繁的发送还是怎样;能不能帮我找一些关于SOCKET调试的方法,比如怎么判断是哪个缓冲区有问题;

我网络方面不熟悉,一直查不到合适的资料。

热点排行