#ifndef SocketH
#define SocketH

#include <iostream.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <netdb.h>
#include <unistd.h>

class Socket
{
  int descripteur;
  int port;  
  char *adresse;
  char retour[10];
public:
  Socket(char *adresse, int port)
  {
    this->adresse = adresse;
    this->port = port;
    descripteur = socket(AF_INET, SOCK_STREAM, 0);
    hostent *hote = gethostbyname(adresse);
    sockaddr_in serveur;
    serveur.sin_family = AF_INET;
    serveur.sin_port = htons(port);
    serveur.sin_addr.s_addr = ((in_addr *)(hote->h_addr))->s_addr;
    connect(descripteur, (sockaddr *)&serveur, sizeof(sockaddr_in));    
  }
  
  void envoyer(char *message)
  {
    write(descripteur, message, strlen(message));
    write(descripteur, "\n", 1);
  }
  
  void recevoir(char *retour, int taille)
  {
    read(descripteur, retour, taille);
  }

  char* recevoir()
  {
    recevoir(retour, 10);
    return retour;
  }

  ~Socket() { close(descripteur); }
};

#endif