packages icon
AUTHOR
Sasha Pachev <sasha@sashanet.com>

ABOUT

 libtcp++ is a free C++ class library to facilitate writing TCP/IP client-server 
 applications written and maintained by Sasha Pachev <sasha@sashanet.com>

REQUIREMENTS

 a C++ compiler on a Unix platform with STL support to the exent of GCC 2.7, 
 a reasonably recent version GCC itself is the best compiler to compile it on.
 The library will cleanly compile on Linux and BSD with g++. Other configurations
 have not yet been tested. You may need to change a few lines to make it work on
 another platform/compiler. Please let me know what you did to make it work in 
 that case.

VERSION
 0.1.0  

INSTALL
 gunzip -c libtcp++*.tar.gz | tar xvf -
 cd libtcp++-*
 ./configure
 make
 su
 make install

USAGE

 #include <tcp++/tcp_client.h>
 #include <tcp++/tcp_server.h>

 to link use -ltcp++

 The use of the client should be pretty obvious from the header file and the test example in 
  tcp_client.cc

  The same applies to the server (see tcp_server.cc ), but one thing requires explanation:
  to write your own server, inherit from TcpServer and implement handle_client(int sock_fd)
  the server will listen on the port specified in the constructor and fork when connection
  is made calling your implementation of handle_client() see source for more details

  To use IP access control, after instantiating TcpServer call add_ip_rule(netnum,
    netmask) of each rule. Use netmask of 255.255.255.255 for a single host, and
  its IP for netnum. Both netnum and netmask are C string representations of
  IP addresses/masks, not the 4-byte arrays. They will be parsed by inet_aton().
  After setting up all the rules with add_ip_rule(), activate them with 
  enable_access_control(). After you have called enable_access_control() all
  connections will be denied except those coming from host that match one of 
  the rules you have added. You can disable it with disable_access_control()


HISTORY
 0.0.1 - Mar 10, 1999
  first release
 0.0.1a - Mar 11, 1999
  fixed the log messages flushing problem
 0.0.1b - Mar 16, 1999
  fixed the block on wait3() when some client handler child had exited and others had not
  by fixing the loop in reaper() in tcp_server.h
 0.0.1c - Mar 23, 1999 - added debug() method to TCP Server
 0.0.2 - added IP-based access control capability to the TcpServer through a new
         class TcpIpRuleSet, which could be used independently of TcpServer to
	 validate an IP address against a set of rules.
 0.0.4 - Oct 24, 1999 added  connect timeout for TcpClient, TcpClient::receive() has a
  now configurable a timeout (0 sec 0 usec means no timeout), renamed .c files to
  .cc, added setsockopt with SO_REUSEADDR on the server socket, added socklen_t to
  make it compile on RedHat 6.0 and some others without warnings where this is the
  type of the last argument to accept().

 0.0.5 - Nov 10, 1999 - added init() methods and no-arguments constructor to TcpClient,
  now you can initialize a TcpClient by just supplying the host's struct in_addr and the
   port to connect on -- details in the tcp_client.h . 

 0.1.0 - Nov 15, 1999 -- finally converted to autoconf/automake
 0.1.1 - Jan 23, 2000 -- fixed a bug in configure that made the compilation
 bomb on Red Hat 6.1 

BUGS
 
  report them to Sasha Pachev <sasha@sashanet.com>

TO DO

 - Test, test, test
 - documentation

LICENSE

 You may use and modify the code as  long as proper credit is given. 

 As with all freeware, I assume no legal responsibility for any damage that may result from
 the use of libtcp++