Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FBB::LocalServerSocket(3bobUnix	Domain Server SFBB::LocalServerSocket(3bobcat)

NAME
       FBB::LocalServerSocket -	Unix Domain Server socket accepting connection
       requests

SYNOPSIS
       #include	<bobcat/localserversocket>
       Linking option: -lbobcat

DESCRIPTION
       An FBB::LocalServerSocket defines a Unix	Domain server socket,  listen-
       ing  for	 connection  requests  from the	local host using a Unix	Domain
       socket. Connection requests may	be  accepted  in  either  blocking  or
       non-blocking  modes. When a connection is accepted a socket is returned
       which may be used to read information from or write information to  the
       client  requesting the connection. The socket that is made available is
       a file descriptor which may be used to initialize a std::istream	and/or
       std::ostream.  The  std::istream	 is  used to read information from the
       client process; the std::ostream	is used	to  send  information  to  the
       client process.	Since a	socket may be considered a file	descriptor the
       avaiable	  FBB::IFdStream,   FBB::IFdStreamBuf,	 FBB::OFdStream,   and
       FBB::OFdStreamBuf classes may be	used profitably	here. Note that	having
       available a socket does not mean	that this  defines  the	 communication
       protocol.  It is	(still)	the responsibility of the programmer to	comply
       with an existing	protocol or to implement a tailor-made	protocol.  The
       latter  situation implies that the sequence of input- and output	opera-
       tions is	defined	by the programmer.

NAMESPACE
       FBB
       All constructors, members, operators  and  manipulators,	 mentioned  in
       this man-page, are defined in the namespace FBB.

INHERITS FROM
       FBB::LocalSocketBase

ENUMERATION
       The  following  enumeration  is	defined	 in th class FBB::LocalServer-
       Socket:

       enum Socket
       This enumeration	holds two values:

       o      KEEP:
	      When this	value is specified at construction time, the file rep-
	      resenting	 the  Unix  Domain  Socket is not removed when the Lo-
	      calServerSocket is destroyed.

       o      UNLINK:
	      When this	value is specified at construction time, the file rep-
	      resenting	 the  Unix  Domain  Socket  is	removed	 when  the Lo-
	      calServerSocket is destroyed. As a socket	cannot be reused, this
	      is  the  default value used with the LocalServerSocket construc-
	      tor.

CONSTRUCTOR
       o      LocalServerSocket():
	      This constructor creates	an  empty  (non-functioning)  FBB::Lo-
	      calServerSocket object. Before it	can be used, the open()	member
	      must be called (see below).

       o      LocalServerSocket(string const &name, Socket  action  =  UNLINK)
	      throw (Exception):
	      This  constructor	 initializes an	FBB::LocalServerSocket object,
	      which will listen	for connection requests	using the  named  Unix
	      Domain  socket.  An FBB::Exception is thrown if the socket could
	      not be constructed. If the constructor is	given a	 second	 argu-
	      ment FBB::LocalServerSocket::KEEP, the constructed socket	is not
	      unlinked when the	FBB::LocalServerSocket	object	is  destroyed.
	      The  construction	 of the	socket does not	mean that the FBB::Lo-
	      calServerSocket object is	actually listening for connections. To
	      start listening, the member listen() should be called.  The copy
	      constructor is not available.

MEMBER FUNCTIONS
       o      size_t accept():
	      The accept() member returns an size_t which is a file descriptor
	      (socket)	that  may  be  used to communicate with	the client re-
	      questing the connection. In more complex programs	 the  returned
	      file descriptor (socket) could be	passed to a class derived from
	      FBB::Fork, handling the communication with the child as a	 sepa-
	      rate (child) process.

       o      void listen(size_t backlog = 5, bool blocking = true):
	      The  listen()  member defines the	way the	FBB::LocalServerSocket
	      will listen for clients requesting a connection.	It can be used
	      only  once  with a FBB::LocalServerSocket. An FBB::Exception ob-
	      ject is thrown if	listening fails.

	      The listen() member's backlog parameter defines the size of  the
	      FBB::LocalServerSocket's	internal queue in which	connection re-
	      quests may be stored waiting for their turn to be	serviced. When
	      backlog  requests	 are waiting and another request arrives, then
	      that request is lost.

	      The member's second parameter, blocking, is used to control  the
	      blocking	mode.  By default, blocking is used, and listen() will
	      wait until a connection is established. This is ok in situations
	      where  clients connect infrquently and for relatively short time
	      intervals. Otherwise, in more complex programs, an FBB::Selector
	      object can be used to sense input	on the server socket and/or on
	      various client sockets.

       o      void open(string const &name, Socket action = UNLINK):
	      This member prepares a FBB::LocalServerSocket object for use. It
	      should only be used in combination with the default constructor.
	      Following	open() the FBB:::LocalServerSocket object will be able
	      to  listen  for  connection requests using the named Unix	Domain
	      socket.  An FBB::Exception is thrown if the socket could not  be
	      constructed.   If	  the	a  second  argument  FBB::LocalServer-
	      Socket::KEEP, is provided	the constructed	socket is not unlinked
	      when  the	 FBB::LocalServerSocket	object is destroyed.  The con-
	      struction	of the socket does not mean that the FBB::LocalServer-
	      Socket  object  is  actually listening for connections. To start
	      listening, the member listen() should be called next.

EXAMPLE
       See also	the localclientsocket(3bobcat) example.

	   #include <iostream>
	   #include <bobcat/localserversocket>
	   #include <bobcat/ifdstream>
	   #include <bobcat/ofdstream>

	   using namespace std;
	   using namespace FBB;

	   int main(int	argc, char **argv)
	   try
	   {
	       if (argc	== 1)
	       {
		   cerr	<< "Provide local filename, e.g., /tmp/uds\n";
		   return 1;
	       }

	       LocalServerSocket server(argv[1]);

	       cerr << "server using `"	<< argv[1] << "'" << endl;

	       cout <<
		   "The	server terminates when it receives a single `q'	on a line\n"
		   "A connection is terminated when no input is	received anymore.\n"
		   "Then another connection is possible" << endl;

	       server.listen();		       // listen in blocking mode

	       while (true)
	       {
		   int fd = server.accept();

		   cerr	<< "Client FD =	" << fd	<< ", "	<< endl;

		   IFdStream in(fd);	       // stream to read from client
		   OFdStream out(fd);	       // stream to write to client
		   string cmd;

		   while (getline(in, cmd))
		   {
		       cout << "Got: " << cmd << endl;
		       out << "Got: " << cmd <<	"\r" <<	endl;

		       if (cmd[0] == 'q')
			   return 0;
		   }
		   cout	<< "Ready for another connection\n";
	       }
	   }
	   catch (Exception const &err)
	   {
	       cerr <<
		   err.what() << endl <<
		   "Server socket on port " << argv[1] <<
		   " can't be opened" << endl;
	       return -1;
	   }

FILES
       bobcat/serversocket - defines the class interface

SEE ALSO
       bobcat(7), localclientsocket(3bobcat),  fork(3bobcat),  ifdstream(3bob-
       cat),  ifdstreambuf(3bobcat), localsocketbase(3bobcat), ofdstream(3bob-
       cat),   ofdstream(3bobcat),   select(2),	  selector(3bobcat),   server-
       socket(3bobcat)

BUGS
       None Reported.

DISTRIBUTION FILES
       o      bobcat_3.25.01-x.dsc: detached signature;

       o      bobcat_3.25.01-x.tar.gz: source archive;

       o      bobcat_3.25.01-x_i386.changes: change log;

       o      libbobcat1_3.25.01-x_*.deb:   debian  package  holding  the  li-
	      braries;

       o      libbobcat1-dev_3.25.01-x_*.deb: debian package holding  the  li-
	      braries, headers and manual pages;

       o      http://sourceforge.net/projects/bobcat: public archive location;

BOBCAT
       Bobcat is an acronym of `Brokken's Own Base Classes And Templates'.

COPYRIGHT
       This  is	 free software,	distributed under the terms of the GNU General
       Public License (GPL).

AUTHOR
       Frank B.	Brokken	(f.b.brokken@rug.nl).

libbobcat-dev_3.25.01-x.tar.gz	   2005-2015   FBB::LocalServerSocket(3bobcat)

NAME | SYNOPSIS | DESCRIPTION | NAMESPACE | INHERITS FROM | ENUMERATION | CONSTRUCTOR | MEMBER FUNCTIONS | EXAMPLE | FILES | SEE ALSO | BUGS | DISTRIBUTION FILES | BOBCAT | COPYRIGHT | AUTHOR

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=localserversocket&sektion=3bobcat&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help