Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

Dv::Net::ServerSocket Class Reference

A class representing an internet server. More...

#include <serversocket.h>

List of all members.

Public Member Functions

 ServerSocket (int port=0, int backlog=10) throw (ServerSocketError)
 Start a server on port.
 ~ServerSocket ()
 Destructor; also closes the socket.
int port ()
unsigned long address ()
Dv::Util::ref< InetAddressinetaddress ()
Dv::Util::ref< Socketaccept (time_t delay=0, size_t bufsize=1024, bool non_blocking=false, std::ostream *dbg=0)
 Accept a new connection from a client.
bool connection (time_t timeout, int *syserr=0)
 Check whether connections are waiting to be accepted.
int fd () const
void close ()
 Closes underlying socket, makes ServerSocket unusable by performing shut_down(2) en close(2) on it and setting the underlying file descriptor to -1.

Protected Member Functions

int fd_accept ()
 Auxiliary function for accept().

Private Member Functions

 ServerSocket (const ServerSocket &)
ServerSocketoperator= (const ServerSocket &)

Private Attributes

int socket_fd_
void * server_address_
bool closed_


Detailed Description

A class representing an internet server.

Example usage:

 try {
   Dv::Net::ServerSocket server(server-port);
   Dv::Util::ref<Socket> client(server.accept());
   std::cerr << "Connection from " << client.host() << ":" << client.port() << std::endl;

   std::string request;
   std::string reply;

   while (*client>>request)
     *client << reply;
   }
 catch (Dv::Net::ServerSocketError& e) {
   std::cerr << e.what() << std::endl;
   return 1;
   }

Definition at line 47 of file serversocket.h.


Constructor & Destructor Documentation

Dv::Net::ServerSocket::ServerSocket int  port = 0,
int  backlog = 10
throw (ServerSocketError) [explicit]
 

Start a server on port.

Parameters:
port on which server will listen for connections.
backlog no of connections allowed in backlog.
Exceptions:
Dv::Net::ServerSocketError if anything goes wrong.

Dv::Net::ServerSocket::~ServerSocket  ) 
 

Destructor; also closes the socket.

Dv::Net::ServerSocket::ServerSocket const ServerSocket  )  [private]
 


Member Function Documentation

int Dv::Net::ServerSocket::port  ) 
 

Returns:
the port on which server listens.

unsigned long Dv::Net::ServerSocket::address  ) 
 

Returns:
the numeric internet address of the server host

Dv::Util::ref<InetAddress> Dv::Net::ServerSocket::inetaddress  ) 
 

Returns:
the internet address of server.
See also:
Dv::Net::InetAddress

Dv::Util::ref<Socket> Dv::Net::ServerSocket::accept time_t  delay = 0,
size_t  bufsize = 1024,
bool  non_blocking = false,
std::ostream *  dbg = 0
 

Accept a new connection from a client.

Parameters:
delay in milliseconds: the time allowed for any subsequent I/O operation on the returned Socket. A delay of 0 implies that I/O operations will wait indefinitely.
bufsize the size of the buffer in the returned Socket.
non_blocking whether the underlying fdstreambuf for the new Socket should be non-blocking
dbg pointer to ostream on which debug info for the new Socket will be written or 0 for no debug
Returns:
A new socket representing a connection with a client. The status of the returned Socket must be tested to verify whether the operation was succesful.
See also:
Dv::Util::fdstreambuf

bool Dv::Net::ServerSocket::connection time_t  timeout,
int *  syserr = 0
 

Check whether connections are waiting to be accepted.

Parameters:
timeout in milliseconds:
syserr if not 0, it will contain a copy of ::errno upon failure
Returns:
true iff accept should succeed, no iff if no input activity on this serversocket was detected for timeout millisecs
Example:
 Dv::Net::ServerSocket ss(port);
 ..
 if ( ss.connection(2000) ) { // only if a connection is waiting within 2 sec
   Dv::Util::ref<Dv::Net::Socket> so(ss.accept());
   *so << "+OK" << std::endl;
   }
 else {
   // do something else
   }
See also:
Dv::Util::fdstreambuf::fdwait

int Dv::Net::ServerSocket::fd  )  const [inline]
 

Returns:
underlying file descriptor (-1 if it was closed).
Definition at line 106 of file serversocket.h.

References socket_fd_.

void Dv::Net::ServerSocket::close  ) 
 

Closes underlying socket, makes ServerSocket unusable by performing shut_down(2) en close(2) on it and setting the underlying file descriptor to -1.

int Dv::Net::ServerSocket::fd_accept  )  [protected]
 

Auxiliary function for accept().

Returns:
new socket connected with client

ServerSocket& Dv::Net::ServerSocket::operator= const ServerSocket  )  [private]
 


Member Data Documentation

int Dv::Net::ServerSocket::socket_fd_ [private]
 

Definition at line 118 of file serversocket.h.

Referenced by fd().

void* Dv::Net::ServerSocket::server_address_ [private]
 

Definition at line 119 of file serversocket.h.

bool Dv::Net::ServerSocket::closed_ [private]
 

Definition at line 121 of file serversocket.h.


The documentation for this class was generated from the following file:
dvnet-0.9.11 [27 December, 2004]