看了论坛里关于send时产生WSAEWOULDBLOCK的处理,仍有疑问.
搜索了一下论坛里关于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时,再将这些数据发送出去.所以还请大侠们指点一下,在这种情况下,如何知道有多少数据是被发送了的.
:_)