在重叠套接字模型里,当接收的时候,怎么得知对方发送已经结束?

DryFisHH 2004-10-24 10:26:51
接收端WSARecv以后,就开始WSAWaitForMultipleEvents(),当发送端结束发送时,是不是要给接收端一个通知?还是接收端自己判断?
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
PiggyXP 2004-11-06
  • 打赏
  • 举报
回复
发送端是不用专门发送通知的

在接收端WSARecv以后,其实这个工作就交给系统后台去做了

接收端只用执行WSAWaitForMultipleEvents(),在有数据到达的时候,与重叠结构关联的event事件就会自己触发的,WSAWaitForMultipleEvents函数就会返回一个结果了

具体你可以到我的blog上看看^_^

http://blog.csdn.net/PiggyXP
《手把手教你玩转重叠I/O模型》
DryFisHH 2004-11-06
  • 打赏
  • 举报
回复
虽然还是没有能够完全理解,不过非常感谢你的热心和帮助。至于你的blog嘛,网上那么有名的blog怎么能不看呢?^_^

以后还要向你请教。
abrams2004 2004-10-25
  • 打赏
  • 举报
回复
根据你定的协议,来判断是否接受到完整的数据
DryFisHH 2004-10-25
  • 打赏
  • 举报
回复
怎么没有人啊
DryFisHH 2004-10-24
  • 打赏
  • 举报
回复
正在学习远程控制,当client向server发一个命令时,server就根据该命令返回结果,client用下面代码接收

while(...)
{

//用重叠模型接收数据并处理...

}
发送完了以后,server继续接收该client的其他命令...
我现在不知道该怎么控制上面的while循环,也就是说,client什么时候知道server已经发送完数据并跳出该while循环?我想到两种:
1.在数据最后加上一个结束标志,client每次接收的时候就判断有没有标志,有就跳出while;(好像较笨)
2.server发完数据后就关闭套接字,此时client的重叠模型就会出错,然后跳出while;
问题是我不想关闭套接字,那么还有其他的好的方法来跳出while吗?

初学,可能问题很幼稚,不过请高手指教,谢了
DryFisHH 2004-10-24
  • 打赏
  • 举报
回复
自己顶

18,356

社区成员

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

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