首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

WSASend()前面为什么要?解决思路

2012-04-07 
WSASend()前面为什么要?C/C++ code... ZeroMemory(&(g_pPerIoDataArr_jl[i]-overlap), sizeof(WSAOVERLAP

WSASend()前面为什么要?

C/C++ code
... ZeroMemory(&(g_pPerIoDataArr_jl[i]->overlap), sizeof(WSAOVERLAPPED));//1 g_pPerIoDataArr_jl[i]->overlap.hEvent = g_CliEventArr_jl[i];    //2WSASend(g_pPerIoDataArr_jl[i]->sockid,&wsaBuf,1,&dwBytes,dwFlags,&g_pPerIoDataArr_jl[i]->overlap,NULL);...

WSASend()前为什么要执行1和2这两条语句,在这里有什么含义吗(当然我知道如果不执行这两条语句,WSASend就不会执行成功)?

[解决办法]
为了使用WSASend的异步完成机制,必须传递一个异步结构,1、2两条语句是为了构造它,1语句是把所有成员置零,防止出现随即的数据,导致程序异常
[解决办法]
看着知道你这个应该是重叠IO模型,如果你不想这样用,WSASend的第六个参数为空的话,也可以执行的
[解决办法]
ZeroMemory(&(g_pPerIoDataArr_jl[i]->overlap), sizeof(WSAOVERLAPPED));//1
 g_pPerIoDataArr_jl[i]->overlap.hEvent = g_CliEventArr_jl[i]; //2

ZeroMemory当然是清空结构体信息

2是设置event. 你这个是基于event的异步socket模型. 还有个callback的重叠io模型.

热点排行