/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- 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);
}