
#ifndef _SSOCKET_H
#define _SSOCKET_H

#include <sys/types.h>
#include <sys/socket.h>

/*
  #ifndef __socklen_t_defined
  typedef int socklen_t;
  #endif

*/

class SSocket
{
 private:
  int _type;
  int _socket;

  struct sockaddr _addr;
  socklen_t _addrlen;

 public:
  SSocket();

  int connect(const char *hostname, int port);

  /* create an incoming socket */
  int listen(int port, int listenqueue, int localhostOnly);
  SSocket *accept();

  int read(char *buffer, int requestedlen);
  int gets(char *buffer, int maxlen);

  int write(const char *buffer, int requestedlen);
  int writeAll(const char *buffer, int requestedlen);
  void puts(const char *buffer);
  void printf(const char *format, ...);

  void getRemoteIP(char *ipstring);

  FILE *getFile();

  int getFD();

  int disableNagle();
  void close();

  ~SSocket();
};

#endif
