关于FD_WRITE 10035 10053 请大侠指教,跪等。解决方案

关于FD_WRITE 10035 10053 请大侠指教,跪等。
做个局域网多文件传输应用,使用socket   api   事件模式,现在出现的问题是发送文件有时成功有时失败,失败通过WSAGetLastError()取得错误号为10035,通过查找资料在发送出现10035时等待FD_WRITE,然后将上一个send失败的数据再次发送,循环若干次后由出现10053错误,含义是连接以放弃或超时,设置了超时时间还是一样。
        希望哪位大侠给个使用fd_write的程序流程结构,或避免出现10035的方法。
        注:我使用的是非阻塞socket.


------解决方案--------------------
10035不是失败,这是预期的错误,如果遇到10035,你应该过一会再重试,正确的方法是通过select检查socket的可写性,等可写再send
至于10053,应该是对方关闭链接

我想你至少得弄明白WSAEWOULDBLOCK得含义再说

至于流程,我想应该是不停发送,直到下面几个条件中有一个出现

1. 没有数据需要发送
2. 收到新得WSAEWOULDBLOCK(10035)
3. 其他错误

对于1. 则等待你新得要发送数据
对于2. 放弃当前发送,等待新得FD_WRITE
对于3. 你应该立刻关闭socket

------解决方案--------------------
请注意另一端的接收缓冲
------解决方案--------------------
发送cnt字节数据:
do
{
sendcnt = send(sock,buf,cnt,MSG_DONTROUTE);
if(sendcnt == SOCKET_ERROR)
{
sendcnt = WSAGetLastError();
if(sendcnt == WSAEWOULDBLOCK)
{
Sleep(1);
//这里应加循环次数控制判断,即设置超时,跳出循环
//...
continue;
}
else
{
//发送数据数据失败
break;
}
}
cnt -= sendcnt;
buf += sendcnt;
}while(cnt > 0);