socket.h

00001 #ifdef __GNUG__
00002 #pragma interface
00003 #endif
00004 
00005 #ifndef _socket_h
00006 #define _socket_h
00007 
00008 #include <unistd.h>
00009 #include <sys/types.h>
00010 
00011 #include <string>
00012 
00013 class TCPSocket {
00014   protected:
00015     TCPSocket();
00016     virtual ~TCPSocket();
00017 
00018     int socket_;
00019     int port_;
00020     bool initialized_;
00021     bool bound_;
00022 
00023   public:
00024     void create();
00025     void bind(u_int16_t port_begin, u_int16_t port_fence);
00026     int port() { return port_; }
00027     u_int32_t addr();
00028 
00029     bool initialized() { return initialized_; }
00030     bool bound() { return bound_; }
00031 
00032     virtual void close();
00033 };
00034 
00035 class TCPIOSocket: public TCPSocket {
00036   public:
00037     int read(void *d, int n);
00038     int write(const void *d, int n);
00039     int read_int(int *d, int n) {return read((void*)d,n*sizeof(int));}
00040     int write_int(const int *d, int n) {return write((void*)d,n*sizeof(int));}
00041     int read_string(std::string &);
00042     int write_string(const std::string &);
00043     int read_int(int &);
00044     int write_int(int);
00045     int read_uint32(u_int32_t &);
00046     int write_uint32(u_int32_t);
00047 };
00048 
00049 class TCPServerSocket: public TCPSocket {
00050     friend class TCPServerConnection;
00051   public:
00052     void listen(int queue_length = 8);
00053 };
00054 
00055 class TCPServerConnection: public TCPIOSocket {
00056   public:
00057     void accept(const TCPServerSocket &);
00058 };
00059 
00060 class TCPClientConnection: public TCPIOSocket {
00061     bool connected_;
00062   public:
00063     TCPClientConnection();
00064     void close();
00065     bool connected() { return connected_; }
00066     void connect(const char *remote_hostname, u_int16_t remote_port);
00067     void connect(u_int32_t remote_host, u_int16_t remote_port);
00068 };
00069 
00070 #endif

Generated at Mon Dec 3 23:23:41 2007 for MPQC 2.3.1 using the documentation package Doxygen 1.5.2.