summaryrefslogtreecommitdiff
path: root/include/Socket.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/Socket.h')
-rw-r--r--include/Socket.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/include/Socket.h b/include/Socket.h
new file mode 100644
index 0000000..355d3b2
--- /dev/null
+++ b/include/Socket.h
@@ -0,0 +1,55 @@
+#ifndef __SOCKET_H__
+#define __SOCKET_H__
+#ifdef __cplusplus
+
+#include "String.h"
+#include "Handle.h"
+#include "Exceptions.h"
+#include "Output.h"
+#include "Input.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