我用socket 发送文件,代码主要如下:
发送端:
nCount = nFileSize / nBuffSize;
WSAEventSelect( mySocket, hEvent,FD_WRITE);
for( i = 0; i < nCount-1; i++)
{
WSAWaitForMultipleEvents(1, lphEvents, false, WSA_INFINITE, false);
pFile->Read(pBuff, nBuffSize);
send(mySocket, pBuff, nBuffSize ,0);
WSAResetEvent(hEvent);
}
//发送文件最后一段
WSAWaitForMultipleEvents(1, lphEvents, false, WSA_INFINITE, false);
pFile->Read(pBuff, nFileSize % nBuffSize);
send(mySocket, pBuff, nFileSize % nBuffSize ,0);
WSAResetEvent(hEvent);
接收端和发送端类似,用的是FD_ACCEPT
我现在的问题是我的发送端发送一次之后就陷入等待,再也不发送数据。
第一次发送完之后FD_WRITE状态为什么不再出现?FD_WRITE不是指可以写入发送缓冲的状态吗?
发送端:
nCount = nFileSize / nBuffSize;
WSAEventSelect( mySocket, hEvent,FD_WRITE);
for( i = 0; i < nCount-1; i++)
{
WSAWaitForMultipleEvents(1, lphEvents, false, WSA_INFINITE, false);
pFile->Read(pBuff, nBuffSize);
send(mySocket, pBuff, nBuffSize ,0);
WSAResetEvent(hEvent);
}
//发送文件最后一段
WSAWaitForMultipleEvents(1, lphEvents, false, WSA_INFINITE, false);
pFile->Read(pBuff, nFileSize % nBuffSize);
send(mySocket, pBuff, nFileSize % nBuffSize ,0);
WSAResetEvent(hEvent);
接收端和发送端类似,用的是FD_ACCEPT
我现在的问题是我的发送端发送一次之后就陷入等待,再也不发送数据。
第一次发送完之后FD_WRITE状态为什么不再出现?FD_WRITE不是指可以写入发送缓冲的状态吗?
接收端这样做应该没问题
我急啊
放到for循环外面
事件只触发一次,这是什么意思?
请指点。