SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Related Sites

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files

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++


Other Sites

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.