关于WSASend()的疑问,急盼!!!!
yzhgr 2007-01-31 09:24:59 我用的是重叠I/O,在用wsasend发送数据的时候有些疑问请大狭指教
发送的主要代码是这么写的,不知道这样有没有问题
while(tlen>0){
tlen=itotallen-ihassend;
if (tlen<=0) //数据发送结束
return true;
if (tlen>MAX_SEND_LEN)
tlen=MAX_SEND_LEN;
Send_Buf.len=MAX_SEND_LEN; //这里的长度到底有何作用?
Send_Buf.buf=Sock_SendBuf[ihassend];
whlie(WSASend(ss,&Send_Buf,tlen,Flags,overlapped,NULL)==SOCKET_ERROR){
if (WSAGetLastError()!=WSA_IO_PENDING){ //等待发成功后再发送第二包数据
closesocket(ss);
WSACloseEvent(hevent);
dwEventTotal--;
return FALSE;
}
Sleep(100);
}
ihassend+=lSend;
}
1.我这样在WSASend不成功后这样一直等,知道成功后再发送下一包是否正确?
2.WSABUF里的LEN长度指的是什么长度?是数据包的总长度吗?如果数据库包的总长度只有100,却给它赋值200,会有问题吗?