在我的程序中使用了AcceptEx与WSARecv函数while (true)
{
if (AcceptEx (ListenSocket, AcceptSocket……) == FALSE)
{
if (WSAGetLastError() != ERROR_IO_PENDING)
{
WinException exception (WSAGetLastError ());
continue;
}
……
if (WSARecv (AcceptSocket……) == SOCKET_ERROR )
{
WinException exception (WSAGetLastError ());
continue;
} }
}
……
在调用WSARecv时总是会出错,提示为:"由于套接字没有联接,并且(当使用一个sendto调用发送数据报套接时)没有提供地址,发送或接收数据的请求没有被接受"请问这是怎么回事啊,需要如何处理
{
if (AcceptEx (ListenSocket, AcceptSocket……) == FALSE)
{
if (WSAGetLastError() != ERROR_IO_PENDING)
{
WinException exception (WSAGetLastError ());
continue;
}
……
if (WSARecv (AcceptSocket……) == SOCKET_ERROR )
{
WinException exception (WSAGetLastError ());
continue;
} }
}
……
在调用WSARecv时总是会出错,提示为:"由于套接字没有联接,并且(当使用一个sendto调用发送数据报套接时)没有提供地址,发送或接收数据的请求没有被接受"请问这是怎么回事啊,需要如何处理
错误,accept()
(LPDWORD)&PerHandleData,(OVERLAPPED**)&lpOverlapped, INFINITE) == 0)
{
//throw (WinException (GetLastError ())); WinException tmp (GetLastError ());
continue;
} CSocket* pSocket = lpOverlapped ->sock;
//OVERLAPPED_BUF *pOverlappedBuf = m_OverlappedPool.GetOverlappedBuf ();
//TODO:TEST if (pSocket ->Shutdown () == SOCKET_ERROR)
throw WinException (GetLastError ());还是显示和上面一样的错误,咋回事啊,而且调用WSASend也会出同样的错误,但调用WSARecv不会有问题