## root/source/testss.cpp

/* [<][>][^][v][top][bottom][index][help] */

## DEFINITIONS

This source file includes following definitions.

1. main

    /* Simple test server socket application.
       Rick Smereka, Copyright (C) 2000-2003.

       This program is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published by
       the Free Software Foundation; either version 2 of the License, or
       (at your option) any later version.

       This program is distributed in the hope that it will be useful,
       but WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       GNU General Public License for more details.

       You should have received a copy of the GNU General Public License
       along with this program; if not, get a copy via the Internet at
       http://gnu.org/copyleft/gpl.html or write to the Free Software
       Foundation, Inc., 59 Temple Place, Suite 330, Boston,
       MA 02111-1307 USA

       You can contact the author via email at rsmereka@future-lab.com

       Original version for Unix and Windows 32-bit.
       Sep/2000, Rick Smereka

       Ported to Debian Linux. Jan/2003, Rick Smereka */

    #include "stdhead.h"
    #include "flsocket.h"
    #include "ssocket.h"
    using namespace std;

    /* global data */

    #ifdef OS_WIN32
    WSADATA wsaData;
    #endif

    int main(void)
    {
       string h1;
       bool done = FALSE;

    #ifdef OS_WIN32
       if (WSAStartup(WINSOCK_VERSION, &wsaData))
          {
          cout << "unable to start WinSock. Program abort\n";
          WSACleanup();
          return(0);
          }
    #endif

       ssocket s1(10010);

       if (!s1.is_init())
          {
          cout << "server init error\n";

    #ifdef OS_WIN32
       WSACleanup();
    #endif

          return(0);
          }

       if (!s1.is_init())
          {
    #ifdef OS_WIN32
       WSACleanup();
    #endif

          cout << "server not initialized\n";
          return(0);
          }

       while(!done)
          {
          cout << "waiting for client connection...";

          if (!s1.server_wait())
             {
    #ifdef OS_WIN32
             WSACleanup();
    #endif

             cout << "\nclient connection error\n";
             return(0);
             }

          cout << "\nclient connection detected\n";

          if (s1.recv_data(h1) == 0)
             cout << "error receiving client data\n";
          else
             {
             cout << "received:" << h1 << ",l=" << h1.length() << '\n';

             if (h1 == "end")
                done = TRUE;

             h1 = "this is the server reply string";

             if (s1.send_data(h1) == 0)
                cout << "errror sending client data\n";
             else
                cout << "send complete\n";
             }

          if (!s1.close_client())
             cout << "error closing client socket\n";
          }

       if (!s1.close_all())
          cout << "error closing sockets\n";
       else
          cout << "termination requested\n";

    #ifdef OS_WIN32
       WSACleanup();
    #endif

       return(0);
    }

/* [<][>][^][v][top][bottom][index][help] */