看了论坛里关于send时产生WSAEWOULDBLOCK的处理,仍有疑问.

jakkye jakkye 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
搜索了一下论坛里关于send时产生WSAEWOULDBLOCK时的处理办法,得出如下结论:
1.产生这个错误只是说明out buffer已经满了,不代表出错.
2.可以等待FD_WRITE消息,此时将没有发送完成的数据再次发送出去.

但还是有疑问,我的问题如下:
1.我上面的两条结论正确吗?
2.关于在FD_WRITE里把没有发送完的数据发送完,这一点如何做到呢?因为
int nSended = send(mysock, myBuf, myLen, 0);
如果此时产生WSAEWOULDBLOCK,那么nSended肯定是SOCKET_ERROR,也就是-1了.此时nSended不能代表已经发送成功的字节数,那么在myBuf这个缓冲区里,究竟有多少字节是已经发送出去的,有多少数据是没有发送出去的呢?

在我的程序时,我想在得到WSAEWOULDBLOCK时,将没有发送完的数据缓冲起来,等到FD_WRITE时,再将这些数据发送出去.所以还请大侠们指点一下,在这种情况下,如何知道有多少数据是被发送了的.

:_)
...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
jakkye
网络编程 18,356 成员 64,161 内容