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模型.