From: Vadim Zeitlin Date: Thu, 16 Mar 2000 16:47:45 +0000 (+0000) Subject: better TestSocketServer() X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ccdb23df47718594a0e3ac791ff820219b39f595 better TestSocketServer() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6760 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/console/console.cpp b/samples/console/console.cpp index 58d11022cf..7f639229de 100644 --- a/samples/console/console.cpp +++ b/samples/console/console.cpp @@ -723,19 +723,22 @@ static void TestSocketServer() { puts("*** Testing wxSocketServer ***\n"); - // we want to launch a server + static const int PORT = 3000; + wxIPV4address addr; - addr.Service(3000); + addr.Service(PORT); wxSocketServer *server = new wxSocketServer(addr); if ( !server->Ok() ) { puts("ERROR: failed to bind"); + + return; } for ( ;; ) { - puts("Server: waiting for connection..."); + printf("Server: waiting for connection on port %d...\n", PORT); wxSocketBase *socket = server->Accept(); if ( !socket ) @@ -746,47 +749,59 @@ static void TestSocketServer() puts("Server: got a client."); - wxString s; - char ch = '\0'; - for ( ;; ) + server->SetTimeout(60); // 1 min + + while ( socket->IsConnected() ) { - if ( socket->Read(&ch, sizeof(ch)).Error() ) + wxString s; + char ch = '\0'; + for ( ;; ) { - puts("ERROR: in wxSocket::Read."); + if ( socket->Read(&ch, sizeof(ch)).Error() ) + { + // don't log error if the client just close the connection + if ( socket->IsConnected() ) + { + puts("ERROR: in wxSocket::Read."); + } - break; - } + break; + } - if ( ch == '\r' ) - continue; + if ( ch == '\r' ) + continue; - if ( ch == '\n' ) - break; + if ( ch == '\n' ) + break; - s += ch; - } + s += ch; + } - if ( ch != '\n' ) - { - break; - } + if ( ch != '\n' ) + { + break; + } - printf("Server: got '%s'.\n", s.c_str()); - if ( s == _T("bye") ) - { - delete socket; + printf("Server: got '%s'.\n", s.c_str()); + if ( s == _T("bye") ) + { + delete socket; - break; + break; + } + + socket->Write(s.MakeUpper().c_str(), s.length()); + socket->Write("\r\n", 2); + printf("Server: wrote '%s'.\n", s.c_str()); } - socket->Write(s.MakeUpper().c_str(), s.length()); - socket->Write("\r\n", 2); - printf("Server: wrote '%s'.\n", s.c_str()); + puts("Server: lost a client."); - delete socket; + socket->Destroy(); } - delete server; + // same as "delete server" but is consistent with GUI programs + server->Destroy(); } static void TestSocketClient() @@ -2608,9 +2623,9 @@ int main(int argc, char **argv) #endif // TEST_MIME #ifdef TEST_SOCKETS - if ( 0 ) - TestSocketServer(); if ( 1 ) + TestSocketServer(); + if ( 0 ) { TestSocketClient(); TestProtocolFtp();