wxWidgets中线程里使用wxSOCKET

来源:互联网 发布:宝宝创意照片软件 编辑:程序博客网 时间:2024/05/18 01:43
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, 
不是说是阻塞式的么?