完成端口传送文件问题

飘雪831101 2010-01-14 07:05:46
我用完成端口传送文件,一个读,一个发.

case CMD_READFILD: //打开文件
{
lp->Cmd=CMD_READOK;
ReadFile((HANDLE)lp->lClassPtr,&lp->pBuffer,MAX_SEND_SIZE,&dwTrans,&lp->Overlapped);
}
break;

case CMD_READOK: //读完之后发
{
lp->Cmd=CMD_READFILD;
lp->Overlapped.Offset+=dwTrans;
st_perOverlapped * pOverSend = new st_perOverlapped[1]; //新申请一个,用于发,
pOverSend->hSocket =lp->hSocket;
pOverSend->Cmd = CMD_SENDSUC;
ZeroMemory(&pOverSend->Overlapped,sizeof(OVERLAPPED));
buf.buf=(char *)lp->pBuffer;
buf.len=dwTrans;
WSASend(pOverSend->hSocket,&buf,1,&dwBuffReceive,0,&pOverSend->Overlapped,NULL); //发了之后,继续又去读.

ReadFile((HANDLE)lp->lClassPtr,lp->pBuffer,1,&dwBuffReceive,&lp->Overlapped);
break;
}

我如何让它发了之后,判断发完了没有,如果发完了,再继续发,让读和发并行呢.谢谢大家了.还有什么好的办法吗?
...全文
181 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘雪831101 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jingxianmoyang 的回复:]
有完整源代码 :-)  刚好公司有一样的东西
[/Quote]

能发给我学习学习吗?我的邮箱是:piaoxue831101@163.com.谢谢了.
蓉城浮世 2010-01-22
  • 打赏
  • 举报
回复
有完整源代码 :-) 刚好公司有一样的东西
ilove1314forever 2010-01-22
  • 打赏
  • 举报
回复
up
wwwhhb4002 2010-01-16
  • 打赏
  • 举报
回复
'
mark
udknight 2010-01-16
  • 打赏
  • 举报
回复
Context带上文件发送的总大小,发送量。Context返回后重新读取该文件,并根据发送量进行指针偏移。
wnx_u 2010-01-15
  • 打赏
  • 举报
回复
无语
飘雪831101 2010-01-14
  • 打赏
  • 举报
回复
能进行一个并发吗?就是读完之后,如何还没有发完,就等待,一旦发完了,马上再发.
wnx_u 2010-01-14
  • 打赏
  • 举报
回复
发了之后不是会发一个完成消息吗?
个人觉得你可以这样做,发的那边只管发,读的那边只管读,如果发的时候为空,且文件没发完,等待数据的到来,读的那边读出来后向公共缓冲中追加数据,发完以后从公共缓冲中读出前面的数据
这样的问题是内存支出比较大,而且文件大小最大为4G

18,356

社区成员

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

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