请教一个关于 WSASend() 未发送完成的数据,如何备份问题。有点难

skyddr666 2016-04-19 11:05:50
请先看我的老代码。普通的套接字发送。
例如:一次需要发送1000个字节,对方网络堵塞,只发送800个字节,会自动备份剩下的200个字节




我的新代码使用了,完成端口iocp,不知道该如何编写了,WSASend 怎么知道发送了多少字节,又该如何备份?

新代码图
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyddr666 2016-04-21
  • 打赏
  • 举报
回复
谢谢老师,请问有什么方案吗
xian_wwq 2016-04-20
  • 打赏
  • 举报
回复
引用 楼主 skyddr666 的回复:
请先看我的老代码。普通的套接字发送。 例如:一次需要发送1000个字节,对方网络堵塞,只发送800个字节,会自动备份剩下的200个字节 我的新代码使用了,完成端口iocp,不知道该如何编写了,WSASend 怎么知道发送了多少字节,又该如何备份? 新代码图
投递的结果都在GetQueuedCompletionStatus中可以获取到 已经完成长度是第二个参数 LPDWORD lpNumberOfBytesTransferred 投递返回后就能拿到这个长度值 可以在数据处理中对投递的总包长和已完成长度进行比较 如果没有投递完成,buf指针后移,继续进行投递即可
skyddr666 2016-04-20
  • 打赏
  • 举报
回复
不是1k,是30000字节
赵4老师 2016-04-20
  • 打赏
  • 举报
回复
问题应该改为:请教一个关于 WSASend() 发送指定待发送数据总长度时,本次发送部分数据相对全部数据的偏移和长度,等待收到接收方反馈本次发送内容已确实无误收到的反馈超时无回应后,如何断开连接、再重新连接,继续发送问题。
笨笨仔 2016-04-19
  • 打赏
  • 举报
回复
我通常都用“整包重发”,1K数据量并不大,如果使用的是应答机制,只要重发一下就行了。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧