最近在耍iocp,也在网上看了不少例子,但却基本没看到使用WSASend群发的例子
最多只是使用WSASend将数据回传,而这个功能相对比较简单,只要学会使用WSARecv
回传则比较容易实现,而广播则较难。
一开始我采用的是send将数据群发(广播),这样不需要使用重叠I/O,也较容易的实现了功能,
但没成功使用WSASend群发消息,心里总有点不舒服,于是慢慢琢磨,最后终于实现了简单的群发功能
但是代码中使用了较多锁,这大大降低了运行效率,感兴趣的朋友可以自己优化。
大体框架跟网上的代码差不多,只是要注意几个细节。下面就一一阐述下。(代码太多,只贴关键代码,其它省略号代替)
定义变量:
accept客户端后,将socket与分配的内存保存
...........................
工作线程中:
if(RECV_MSG==pIoData->operationType)
.....
这里PostQueuedCompletionStatus至关重要!!
else if(SEND_MSG==pIoData->operationType)
.....
工程下载地址(工程比较乱,将就看,发现错误,请指出,感激不尽):
http://download.csdn.net/detail/woshiyuanlei/8641447