当我的客户端向服务器发送文件时,我应该在发送下一个块之前睡眠(100)左右,以确保服务器有足够的时间下载+写入数据吗?
这看起来完全没必要吗?
此外,我在发送块时遇到阻塞错误(#10035),所以我只是循环发送直到成功,如果send == SOCKET_ERROR goto SendAgain; ,那可以吗?
答案 0 :(得分:2)
如果你是通过TCP发送你的文件,那么它是确保收到所有内容的协议,我不会在每个块之间休眠。
willblock错误要么是您为输出缓冲区发送了太多数据,要么尝试发送太快,并且远程缓冲区已满。这似乎可以再次发送,因为接收器收到它但没有足够的空间来存储它并让juste放弃它。
以下是一篇关于您的错误的小文章:Winsock error 10035
答案 1 :(得分:2)
在我看来,使用sleepfunction来等待某些事情是在99%的时间里做错了。 你现在永远不会有你需要的时间,或者你期望一个进程被执行(可能被例如尖峰,i / o中的其他问题等等中断)
如果你想确保一些重要的事情被完全执行,你应该阅读信号量或类似信息,你可以在开始/结束时锁定/释放进程。
答案 2 :(得分:0)