新人求救,完成端口发送数据的问题

qq_37062864 2018-01-23 06:19:22
我参考了大多数的资料都是说完成端口接收数据的,一旦我开始尝试发送数据就有几个问题,第一是不知道什么模式,我是在工作线程之外调用WSASend其他不管,还是用什么函数给到GetQueuedCompletionStatus里让工作线程来完成WSASend。第二是实际使用WSASend函数的时候我需要给这一次发送构造对应的IO结构体和句柄结构体这样一来就需要申请内存那岂不是每一次发送数据都需要申请内存这些内存什么时候释放、怎么释放。
...全文
930 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2018-03-20
  • 打赏
  • 举报
回复
引用 楼主 qq_37062864 的回复:
我参考了大多数的资料都是说完成端口接收数据的,一旦我开始尝试发送数据就有几个问题,第一是不知道什么模式,我是在工作线程之外调用WSASend其他不管,还是用什么函数给到GetQueuedCompletionStatus里让工作线程来完成WSASend。第二是实际使用WSASend函数的时候我需要给这一次发送构造对应的IO结构体和句柄结构体这样一来就需要申请内存那岂不是每一次发送数据都需要申请内存这些内存什么时候释放、怎么释放。
IOCP的数据处理,都是先投递,后处理 所以WSASend的时候,就需要申请内存,申请成功后携带发送的数据投递 然后在GetQueuedCompletionStatus中接收到数据处理结果,释放申请的内存 这一块推荐构建个对象池,尽量复用投递对象, 提交效率也减少内存碎片 当然因为涉及多线程,对象池加锁是少不了的
qq_37062864 2018-02-02
  • 打赏
  • 举报
回复
不是,就是在学习IOCP的时候发现这个问题不知道怎么搞,怎么上来都劝我不要学呀
赵4老师 2018-01-24
  • 打赏
  • 举报
回复
worldy 2018-01-24
  • 打赏
  • 举报
回复
完成端口是win通信最复杂的但又是最高效的一种机制,如果对其机理没有清楚的了解和理解,是比较难于做好的,建议,先找先关的资料学习一下
smwhotjay 2018-01-24
  • 打赏
  • 举报
回复
勿在浮沙筑高台。 iocp需要深刻的理解windows的iocp机制。

18,356

社区成员

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

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