#ifdef __GNUG__ #pragma interface #endif #ifndef _socket_h #define _socket_h #include #include #include class TCPSocket { protected: TCPSocket(); virtual ~TCPSocket(); int socket_; int port_; bool initialized_; bool bound_; public: void create(); void bind(u_int16_t port_begin, u_int16_t port_fence); int port() { return port_; } u_int32_t addr(); bool initialized() { return initialized_; } bool bound() { return bound_; } virtual void close(); }; class TCPIOSocket: public TCPSocket { public: int read(void *d, int n); int write(const void *d, int n); int read_int(int *d, int n) {return read((void*)d,n*sizeof(int));} int write_int(const int *d, int n) {return write((void*)d,n*sizeof(int));} int read_string(std::string &); int write_string(const std::string &); int read_int(int &); int write_int(int); int read_uint32(u_int32_t &); int write_uint32(u_int32_t); }; class TCPServerSocket: public TCPSocket { friend class TCPServerConnection; public: void listen(int queue_length = 8); }; class TCPServerConnection: public TCPIOSocket { public: void accept(const TCPServerSocket &); }; class TCPClientConnection: public TCPIOSocket { bool connected_; public: TCPClientConnection(); void close(); bool connected() { return connected_; } void connect(const char *remote_hostname, u_int16_t remote_port); void connect(u_int32_t remote_host, u_int16_t remote_port); }; #endif