#ifndef __SOCKET_H__ #define __SOCKET_H__ #ifdef __cplusplus #include "Handle.h" #include "String.h" #include "Output.h" #include "Input.h" #include "Exceptions.h" /* * Cree un socket. * * SetLocal(hostname, port) définit le hostname local et le port a écouter, si le * socket est destine a etre un socket serveur, ou la vhost et le port source si * le socket est destine a se etre un socket client. Renvoie faux si probleme quelconque. * * Connect(hostname, port) passe le socket en mode client et va se connecter sur * l'adresse hostname:port specifiee. * * Listen passe le socket en mode serveur. * * Accept permet de récuperer un client qui se connecte sur un socket server, et * renvoie le socket de lecture/ecriture correspondant. * * Les methodes IsConnected et IsListening permettent de verifier l'etat du socket. * * Les fonctions WriteFile et ReadFile permettent de transmettre un fichier sur le socket. * Tres utile pour l'upload ou le download. */ class Socket : public Handle { public: Socket() throw (GeneralException); virtual ~Socket() {} bool SetLocal(String, int = 0); bool Connect(String, int); bool Listen(); Socket Accept(); bool IsConnected(); bool IsListening(); size_t WriteFile(Output &); size_t ReadFile(Input &); virtual bool CanRead(); virtual bool CanWrite(); virtual String GetName(); private: Socket(int s); bool connected, listening; }; #else #error This only works with a C++ compiler #endif #endif