libsocket.hh-TP5


Fichier texte: [libsocket.hh-TP5]

#ifndef _LIBSOCKET_HH_
#define _LIBSOCKET_HH_

#include <string>
using std::string;

class ErrInfo
{
private:
  int    _code;
  string _proc;
public:
  ErrInfo();
  void errset(int code, string proc);
  void errmsg(char* buf, int n);
};

class Socket : public ErrInfo
{
private:
  int _fd;
public:
  Socket();
  int socket();
  int close();

  int bind(int port);
  int listen(int backlog=10);
  int accept(Socket& client);

  int write(std::string buf);
  int write(const char* buf);
  int write(const char* buf, int n);

  int connect(std::string host, int port);
  int connect(const char* host, int port);

  int read(char* buf, int n);
  int readline(char* buf, int n);

  int put_int8 (int n);
  int put_int16(int n);
  int put_int32(int n);

  int get_int8 (int&n);
  int get_int16(int&n);
  int get_int32(int&n);
};

class Server : public Socket
{
public:
  Server();
  int run(int port);
  virtual int loop();
  virtual void interaction(Socket& client) = 0;
};

class Client : public Socket
{
public:
  Client();
  int run(std::string host, int port);
  int run(const char* host, int port);
  virtual int interaction() = 0;
};

#endif