#ifndef __SOCKET_H__ #define __SOCKET_H__ #include #include #include #include #include class Socket : public Handle { public: Socket() throw (GeneralException); Socket(const Socket &); virtual ~Socket() { close(); } bool SetLocal(const String &, int = 0); bool Connect(const String &, int); bool Listen(); Socket Accept() throw (GeneralException); bool IsConnected(); bool IsListening(); virtual bool CanRead(); virtual bool CanWrite(); virtual String GetName(); int GetPort(); void CloseWrite(); void CloseRead(); protected: virtual ssize_t nwrite(const void *, size_t) throw (GeneralException); virtual ssize_t nread(void *, size_t) throw (GeneralException); virtual int ndup() const throw (GeneralException); virtual int nclose() throw (GeneralException); private: Socket(int s); bool connected, listening, writeclosed, readclosed; }; #endif