DWORD RecvAll( wxSocketBase * socket, char * buf, int size )
{
DWORD dwStatus = 0 ;
char * p = buf;
int total = 0;
while( total < size )
{
socket->Read( p , size - total ) ;
if ( socket->Error() )
{
dwStatus = socket->LastError() ;
break ;
}
int count = socket->LastCount() ;
total += count ;
p +=count ;
}
return dwStatus ;
}
一线程中建立一wxSocketClient来发送请求信息,并立即接收回应,然后再将回应信息在界面上显示出来:
m_pSocket = new wxSocketClient() ;
m_pSocket->SetTimeout( 5 ) ;
m_pSocket->SetFlags( wxSOCKET_WAITALL) ;
wxSOCKET_WAITALL是阻塞式的 但是不会阻塞GUI界面的。当出现错误时我会Destory,然后再重新new wxSocketClient再Connect服务端,可这以后的RecvAll返回的一直都是错误码7,7对应的是wxSOCKET_WOULDBLOCK,
不是说是阻塞式的么?
{
DWORD dwStatus = 0 ;
char * p = buf;
int total = 0;
while( total < size )
{
socket->Read( p , size - total ) ;
if ( socket->Error() )
{
dwStatus = socket->LastError() ;
break ;
}
int count = socket->LastCount() ;
total += count ;
p +=count ;
}
return dwStatus ;
}
一线程中建立一wxSocketClient来发送请求信息,并立即接收回应,然后再将回应信息在界面上显示出来:
m_pSocket = new wxSocketClient() ;
m_pSocket->SetTimeout( 5 ) ;
m_pSocket->SetFlags( wxSOCKET_WAITALL) ;
wxSOCKET_WAITALL是阻塞式的 但是不会阻塞GUI界面的。当出现错误时我会Destory,然后再重新new wxSocketClient再Connect服务端,可这以后的RecvAll返回的一直都是错误码7,7对应的是wxSOCKET_WOULDBLOCK,
不是说是阻塞式的么?