我用的是CSocket类,获取文件列表时调用一个函数Accept(),即sockSrvr.Accept(datachannel),其中sockSrvr是CSocket类的一个对象。昨天我的ftp帐号获取不了列表,用cuteftp上的话显示“无法传输”,而我自己的ftp客户端程序就在LIST命令发出后不往下走了,后来调试找到sockSrvr.Accept(datachannel)报错,再往里找,找到sockcore.cpp中,发现在下面的函数体里出了问题:
BOOL CSocket::Accept(CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr, int* lpSockAddrLen)
{
if (m_pbBlocking != NULL)
{
WSASetLastError(WSAEINPROGRESS);
return FALSE;
}
while (!CAsyncSocket::Accept(rConnectedSocket, lpSockAddr, lpSockAddrLen))
{
if (GetLastError() == WSAEWOULDBLOCK)
{
if (!PumpMessages(FD_ACCEPT))
return FALSE;
}
else
return FALSE;
}
return TRUE;
}
具体表现是,程序在while 语句里出不来了,按道理满足if条件该return FALSE的,但怎么就是出不来呢?哪位大侠帮忙解释一下,不胜感激!!!!!!!!!!!!!!!