libsocket 1.5
Network::NetSocket Class Reference

This class represent an abstract socket connection (udp | tcp server | tcp client) More...

#include <netsocket.hh>

Inheritance diagram for Network::NetSocket:
Network::Socket Network::TcpSocket Network::UdpSocket

List of all members.

Public Member Functions

 NetSocket (SOCKET_KIND kind, SOCKET_VERSION version=V4)
 NetSocket (SOCKET_KIND kind, PROTO_KIND pkind, SOCKET_VERSION version=V4)
virtual ~NetSocket ()
virtual void writeto (const std::string &str, const std::string &host, int port)
 function used to send a msg to a specific host (UDP)
std::string read ()
 function used by >> operator (read a string on current socket)
std::string read (int timeout)
 read a string with a timeout
std::string read (int &port, std::string &host)
 Get a line from socket and store client hostname and port in port and host variable.
std::string read (int &port, std::string &host, int timeout)
 Get a line from socket and store client hostname and port in port and host variable (with a timeout on listen)
std::string readn (unsigned int size)
 read a string from socket
std::string readn (int timeout, unsigned int size)
 read a string with a timeout
std::string readn (int &port, std::string &host, unsigned int size)
 Get a line from socket and store client hostname and port in port and host variable.
std::string readn (int &port, std::string &host, int timeout, unsigned int size)
 Get a line from socket and store client hostname and port in port and host variable (with a timeout on listen)

Protected Member Functions

struct sockaddr_in _get_addr (int port) const
 internal function (construct a sockaddr)
struct sockaddr_in _get_addr (const std::string &host, int port) const
 internal function (construct a sockaddr)

Exceptions:
HostnameErrorwhen host is incorrect

int _bind (int port, const std::string &host)
 Bind a UDP server

Exceptions:
SocketErrorwhen socket libc function return a negative value
Exceptionif the selected protocole is incorrect (is you receive this exception, please submit a bug report)

int _bind (int port)
 Bind a TCP server

Exceptions:
SocketErrorwhen socket libc function return a negative value
SetsockoptErrorwhen setsockopt libc function return a negative value
BindErrorwhen bind libc function return a negative value
Exceptionif the selected protocole is incorrect (is you receive this exception, please submit a bug report)

int _accept (int port, int server_socket) const
 Wait for a client

Exceptions:
AcceptErrorwhen accept libc function return a negative value.

std::string _get_ip (int port, int socket) const
 Get Client Ip.
void _connect (int socket, int port, const std::string &host) const
 Connect to a hostname

Exceptions:
ConnectErrorwhen connect libc function return a negative value.

std::string _read_line (int socket)
 Get a line from socket (when used with textual protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

std::string _read_line (int socket, int &port, std::string &host)
 Get a line from socket and store client hostname and port in port and host variable (when used with textual protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection
GetpeernameErrorwhen getpeername libc function return a negative value.

virtual std::string _read_line_bin (int socket, int &port, std::string &host, unsigned int pkg_size)=0
 Get a line from socket and store client hostname and port in port and host variable (when used with binary protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection
GetpeernameErrorwhen getpeername libc function return a negative value.

virtual std::string _read_line_bin (int socket, unsigned int size)=0
 Get a line from socket (when used with binary protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

void _write_str (int socket, const std::string &str, const std::string &host, int port) const
 Write a string to a socket to a particular host (UDP) (when used with textual protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

void _write_str_bin (int socket, const std::string &str, const std::string &host, int port) const
 Write a string to a socket to a particular host (UDP) (when used with binary protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

Protected Attributes

int _port

Detailed Description

This class represent an abstract socket connection (udp | tcp server | tcp client)

Author:
Julien Lemoine <speedblue at="" happycoders="" dot="" org>="">

Definition at line 33 of file netsocket.hh.


Constructor & Destructor Documentation

Network::NetSocket::NetSocket ( SOCKET_KIND  kind,
SOCKET_VERSION  version = V4 
) [inline]

Definition at line 36 of file netsocket.hh.

                                                             :
      Socket(kind, version), _port(0)
    {
    }
Network::NetSocket::NetSocket ( SOCKET_KIND  kind,
PROTO_KIND  pkind,
SOCKET_VERSION  version = V4 
) [inline]

Definition at line 40 of file netsocket.hh.

                                                                               :
      Socket(kind, pkind, version), _port(0)
    {
    }
virtual Network::NetSocket::~NetSocket ( ) [inline, virtual]

Definition at line 45 of file netsocket.hh.

{}

Member Function Documentation

int Network::NetSocket::_accept ( int  port,
int  server_socket 
) const [protected]

Wait for a client

Exceptions:
AcceptErrorwhen accept libc function return a negative value.

Definition at line 211 of file netsocket.cc.

References _get_addr(), Network::Socket::_version, HERE, and Network::V4.

Referenced by Network::TcpSocket::accept().

  {
#ifdef LIBSOCKET_WIN
    int                         size;
#else
    socklen_t                   size;
#endif
    int                 s;
    struct sockaddr_in  addr;
#ifdef IPV6_ENABLED
    struct sockaddr_in6 addr6;

    if (_version == V4)
      {
#endif
        addr = _get_addr(port);
        size = sizeof(addr);
        s = accept(socket, (struct sockaddr*)&addr, &size);
#ifdef IPV6_ENABLED
      }
    else
      {
        addr6 = _get_addr6(port);
        size = sizeof(addr6);
        s = accept(socket, (struct sockaddr*)&addr6, &size);
      }
#endif
    if (s < 0)
      throw AcceptError("Accept Error", HERE);
    return s;
  }
int Network::NetSocket::_bind ( int  port,
const std::string &  host 
) [protected]

Bind a UDP server

Exceptions:
SocketErrorwhen socket libc function return a negative value
Exceptionif the selected protocole is incorrect (is you receive this exception, please submit a bug report)

Definition at line 86 of file netsocket.cc.

References Network::Socket::_addr, _get_addr(), Network::Socket::_kind, Network::Socket::_version, HERE, Network::TCP, Network::UDP, and Network::V4.

Referenced by Network::UdpSocket::connect(), and Network::TcpSocket::connect().

  {
    int                 s;

    if (_kind == UDP)
      {
#ifdef IPV6_ENABLED
        if (_version == V4)
#endif
          s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
#ifdef IPV6_ENABLED
        else
          s = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
#endif
      }
    else if (_kind == TCP)
      {
#ifdef IPV6_ENABLED
        if (_version == V4)
#endif
          s = socket(PF_INET, SOCK_STREAM, 0);
#ifdef IPV6_ENABLED
        else
          s = socket(PF_INET6, SOCK_STREAM, 0);
#endif
      }
    else
      throw Exception("Unknown Protocole", HERE);

    if (s < 0)
      throw SocketError("Socket error", HERE);
#ifdef IPV6_ENABLED
    if (_version == V4)
#endif
      _addr = _get_addr(host, port);
#ifdef IPV6_ENABLED
    else
      _addr6 = _get_addr6(host, port);
#endif
    return s;
  }
int Network::NetSocket::_bind ( int  port) [protected]

Bind a TCP server

Exceptions:
SocketErrorwhen socket libc function return a negative value
SetsockoptErrorwhen setsockopt libc function return a negative value
BindErrorwhen bind libc function return a negative value
Exceptionif the selected protocole is incorrect (is you receive this exception, please submit a bug report)

Definition at line 128 of file netsocket.cc.

References _get_addr(), Network::Socket::_kind, Network::Socket::_version, HERE, Network::TCP, Network::UDP, and Network::V4.

  {
    int                 s, on;

    if (_kind == TCP)
      {
#ifdef IPV6_ENABLED
        if (_version == V4)
#endif
          s = socket(PF_INET, SOCK_STREAM, 0);
#ifdef IPV6_ENABLED
        else
          s = socket(PF_INET6, SOCK_STREAM, 0);
#endif
      }
    else if (_kind == UDP)
      {
#ifdef IPV6_ENABLED
        if (_version == V4)
#endif
          s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
#ifdef IPV6_ENABLED
        else
          s = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
#endif
      }
    else
      throw Exception("Unknown Protocole", HERE);
    if (s < 0)
      throw SocketError("Socket error", HERE);
    on = 1;

    if (_kind == TCP && setsockopt(s, SOL_SOCKET,
                                   SO_REUSEADDR, (void *)&on,
                                   sizeof (on)) == -1)
      throw SetsockoptError("setsockopt error", HERE);

#ifdef IPV6_ENABLED
    if (_version == V4)
      {
#endif
        struct sockaddr_in      addr;
        addr = _get_addr(port);
        if (bind(s,(struct sockaddr*)&addr, (int)sizeof(addr)) == -1)
          throw BindError("Bind error", HERE);
#ifdef IPV6_ENABLED
      }
    else
      {
        struct sockaddr_in6     addr6;
        addr6 = _get_addr6(port);
        if (bind(s,(struct sockaddr*)&addr6, (int)sizeof(addr6)) == -1)
          throw BindError("Bind error", HERE);
      }
#endif
    return s;
  }
void Network::NetSocket::_connect ( int  socket,
int  port,
const std::string &  host 
) const [protected]

Connect to a hostname

Exceptions:
ConnectErrorwhen connect libc function return a negative value.

Definition at line 186 of file netsocket.cc.

References _get_addr(), Network::Socket::_version, HERE, and Network::V4.

Referenced by Network::TcpSocket::connect().

  {
#ifdef IPV6_ENABLED
    if (_version == V4)
      {
#endif
        struct sockaddr_in      addr;
        addr = _get_addr(host, port);
        if (connect(socket, (struct sockaddr *)&addr,
                    sizeof (addr)) < 0)
          throw ConnectError("Unable to connect", HERE);
#ifdef IPV6_ENABLED
      }
    else
      {
        struct sockaddr_in6     addr6;
        addr6 = _get_addr6(host, port);
        if (connect(socket, (struct sockaddr *)&addr6,
                    sizeof (addr6)) < 0)
          throw ConnectError("Unable to connect", HERE);
      }
#endif
  }
struct sockaddr_in Network::NetSocket::_get_addr ( const std::string &  host,
int  port 
) const [read, protected]

internal function (construct a sockaddr)

Exceptions:
HostnameErrorwhen host is incorrect

Definition at line 30 of file netsocket.cc.

References HERE.

  {
    struct hostent      *he;
    struct sockaddr_in  addr;

    memset(&addr, 0, sizeof(struct sockaddr_in));
    he = gethostbyname(host.c_str());
    if (!he)
      throw HostnameError("Unknown Hostname", HERE);
    addr.sin_addr = *((struct in_addr *)he->h_addr);
    addr.sin_port = htons(port);
    addr.sin_family = AF_INET;
    return addr;
  }
struct sockaddr_in Network::NetSocket::_get_addr ( int  port) const [read, protected]

internal function (construct a sockaddr)

Definition at line 61 of file netsocket.cc.

Referenced by _accept(), _bind(), _connect(), _write_str(), and _write_str_bin().

  {
    struct sockaddr_in  addr;

    memset(&addr, 0, sizeof(struct sockaddr_in));
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    addr.sin_port = htons(port);
    addr.sin_family = AF_INET;
    return addr;
  }
std::string Network::NetSocket::_get_ip ( int  port,
int  socket 
) const [protected]

Get Client Ip.

Definition at line 243 of file netsocket.cc.

Referenced by Network::TcpSocket::get_ip().

  {
    struct sockaddr_in        addr;
#ifdef LIBSOCKET_WIN
    int                         size;
#else
    socklen_t                   size;
#endif

    memset(&addr, '\0', sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    addr.sin_port = htons(port);
    size = sizeof(addr);
    getpeername(socket, (struct sockaddr *)&addr, &size);
    return(std::string(inet_ntoa(addr.sin_addr)));
  }
std::string Network::NetSocket::_read_line ( int  socket) [protected, virtual]

Get a line from socket (when used with textual protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

Implements Network::Socket.

Definition at line 261 of file netsocket.cc.

References Network::Socket::_buffer, Network::Socket::_check_answer(), Network::Socket::_kind, Network::Socket::_set_timeout(), Network::Socket::_socket, Network::Socket::_state_timeout, Network::Socket::_tls, Network::Socket::_update_buffer(), HERE, and Network::UDP.

Referenced by read().

  {
    char                chr[MAXPKTSIZE];
    std::string         str = "";
    int                 res = 1, i;
    std::pair<int, int> delim;
    bool                end = false;

    if (socket < 0)
      throw NoConnection("No Socket", HERE);
    if (!_update_buffer(delim, i, str))
      while (!end)
        {
          memset(chr, 0, MAXPKTSIZE);
          if (_state_timeout)
            _set_timeout(true, _socket, _state_timeout);
          if (_kind == UDP)
#ifdef LIBSOCKET_WIN
            res = recv(socket, chr, MAXPKTSIZE, 0);
#else
            res = recv(socket, chr, MAXPKTSIZE, MSG_TRUNC);
#endif
          else
#ifdef TLS
            if (_tls)
              res = gnutls_record_recv(_session, chr, MAXPKTSIZE);
            else
#endif
              res = recv(socket, chr, MAXPKTSIZE, 0);
          if (_check_answer(res, str))
            return str;
          _buffer += std::string(chr, res);
          if (_update_buffer(delim, i, str))
            end = true;
        }
    _state_timeout = 0;
    return str;
  }
std::string Network::NetSocket::_read_line ( int  socket,
int &  port,
std::string &  host 
) [protected]

Get a line from socket and store client hostname and port in port and host variable (when used with textual protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection
GetpeernameErrorwhen getpeername libc function return a negative value.

Definition at line 300 of file netsocket.cc.

References Network::Socket::_buffer, Network::Socket::_check_answer(), Network::Socket::_kind, Network::Socket::_set_timeout(), Network::Socket::_socket, Network::Socket::_state_timeout, Network::Socket::_tls, Network::Socket::_update_buffer(), Network::Socket::_version, HERE, Network::UDP, and Network::V4.

  {
    char                        chr[MAXPKTSIZE];
    std::string                 str = "";
    int                         res = 1, i;
    std::pair<int, int>         delim;
    struct sockaddr_in          addr;
#ifdef IPV6_ENABLED
    struct sockaddr_in6         addr6;
#endif
#ifdef LIBSOCKET_WIN
    int                         size;
#else
    socklen_t                   size;
#endif
    bool                        end = false;

#ifdef IPV6_ENABLED
    if (V4 == _version)
#endif
      size = sizeof(addr);
#ifdef IPV6_ENABLED
    else
      size = sizeof(addr6);
#endif
    if (socket < 0)
      throw NoConnection("No Socket", HERE);
    if (!_update_buffer(delim, i, str))
      while (!end)
        {
          if (_state_timeout)
            _set_timeout(true, _socket, _state_timeout);
          if (_kind == UDP)
            {
#ifdef LIBSOCKET_WIN
              int flags = 0;
#else
              int flags = MSG_TRUNC;
#endif

#ifdef IPV6_ENABLED
              if (V4 == _version)
#endif
                res = recvfrom(socket, chr, MAXPKTSIZE, flags,
                               (struct sockaddr *) &addr, &size);
#ifdef IPV6_ENABLED
              else
                res = recvfrom(socket, chr, MAXPKTSIZE, flags,
                               (struct sockaddr *) &addr6, &size);
#endif
            }
          else
            {
#ifdef TLS
              if (_tls)
                res = gnutls_record_recv(_session, chr, MAXPKTSIZE);
              else
#endif
                res = recvfrom(socket, chr, MAXPKTSIZE, 0, NULL, 0);
#ifdef IPV6_ENABLED
              if (V4 == _version)
                {
#endif
                  if (getpeername(socket, (struct sockaddr *) &addr, &size) < 0)
                    throw GetpeernameError("getpeername error", HERE);
#ifdef IPV6_ENABLED
                }
              else
                if (getpeername(socket, (struct sockaddr *) &addr6, &size) < 0)
                  throw GetpeernameError("getpeername error", HERE);
#endif
            }
          if (_check_answer(res, str))
            return str;
          _buffer += std::string(chr, res);
          if (_update_buffer(delim, i, str))
            end = true;
        }
#ifdef IPV6_ENABLED
    if (V4 == _version)
      {
#endif
        host = std::string(inet_ntoa(addr.sin_addr));
        port = ntohs(addr.sin_port);
#ifdef IPV6_ENABLED
      }
    else
      {
        char buf[INET6_ADDRSTRLEN];
        if (inet_ntop(AF_INET6, &addr6.sin6_addr, buf, INET6_ADDRSTRLEN) == 0)
          throw InetntopError("Not a valid address", HERE);
        host = std::string(buf);
        port = ntohs(addr6.sin6_port);
      }
#endif
    _state_timeout = 0;
    return str;
  }
virtual std::string Network::NetSocket::_read_line_bin ( int  socket,
int &  port,
std::string &  host,
unsigned int  pkg_size 
) [protected, pure virtual]

Get a line from socket and store client hostname and port in port and host variable (when used with binary protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection
GetpeernameErrorwhen getpeername libc function return a negative value.

Implemented in Network::TcpSocket, and Network::UdpSocket.

Referenced by read(), and readn().

virtual std::string Network::NetSocket::_read_line_bin ( int  socket,
unsigned int  size 
) [protected, pure virtual]

Get a line from socket (when used with binary protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

Implements Network::Socket.

Implemented in Network::TcpSocket, and Network::UdpSocket.

void Network::NetSocket::_write_str ( int  socket,
const std::string &  str,
const std::string &  host,
int  port 
) const [protected]

Write a string to a socket to a particular host (UDP) (when used with textual protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

Definition at line 400 of file netsocket.cc.

References Network::Socket::_addr, _get_addr(), Network::Socket::_tls, Network::Socket::_version, HERE, SENDTO_FLAGS, and Network::V4.

Referenced by writeto().

  {
    struct sockaddr_in          addr;
#ifdef IPV6_ENABLED
    struct sockaddr_in6         addr6;
#endif
    int                         res = 1;
    const char                  *buf = str.c_str();
    unsigned int                count = 0;

#ifdef IPV6_ENABLED
    if (V4 == _version)
#endif
      addr = _get_addr(host, port);
#ifdef IPV6_ENABLED
    else
      addr6 = _get_addr6(host, port);
#endif
    if (socket < 0)
      throw NoConnection("No Socket", HERE);
    while (res && count < str.size())
      {
#ifdef IPV6_ENABLED
        if (V4 == _version)
#endif
#ifdef TLS
          if (_tls)
            res = gnutls_record_send(_session, buf + count, str.size() - count);
          else
#endif
            res = sendto(socket, buf + count,
                         str.size() - count, SENDTO_FLAGS,
                         (const struct sockaddr*)&addr, sizeof(_addr));
#ifdef IPV6_ENABLED
        else
          res = sendto(socket, buf + count,
                       str.size() - count, SENDTO_FLAGS,
                       (const struct sockaddr*)&addr6, sizeof(_addr6));
#endif
        if (res <= 0)
          throw ConnectionClosed("Connection Closed", HERE);
        count += res;
      }
  }
void Network::NetSocket::_write_str_bin ( int  socket,
const std::string &  str,
const std::string &  host,
int  port 
) const [protected]

Write a string to a socket to a particular host (UDP) (when used with binary protocol)

Exceptions:
NoConnectionwhen there is no open socket
ConnectionClosedwhen there is no more connection.

Definition at line 446 of file netsocket.cc.

References Network::Socket::_addr, _get_addr(), Network::Socket::_tls, Network::Socket::_version, HERE, SENDTO_FLAGS, and Network::V4.

Referenced by writeto().

  {
    struct sockaddr_in          addr;
#ifdef IPV6_ENABLED
    struct sockaddr_in6         addr6;
#endif
    int                         res = 1;
    unsigned int                count = 0;
#ifdef LIBSOCKET_WIN
    char*                       buf = new char[str.size() + 2];
#else
    char                        buf[str.size() + 2];
#endif

    buf[0] = str.size() / 256;
    buf[1] = str.size() % 256;
    memcpy(buf + 2, str.c_str(), str.size());
#ifdef IPV6_ENABLED
    if (V4 == _version)
#endif
      addr = _get_addr(host, port);
#ifdef IPV6_ENABLED
    else
      addr6 = _get_addr6(host, port);
#endif
    if (socket < 0)
      throw NoConnection("No Socket", HERE);
    while (res && count < str.size() + 2)
      {
#ifdef IPV6_ENABLED
        if (V4 == _version)
#endif
#ifdef TLS
          if (_tls)
            res = gnutls_record_send(_session, buf + count, str.size() + 2 - count);
          else
#endif
            res = sendto(socket, buf + count, str.size() + 2 - count, 
                         SENDTO_FLAGS,
                         (const struct sockaddr*)&addr, sizeof(_addr));
#ifdef IPV6_ENABLED
        else
          res = sendto(socket, buf + count, str.size() + 2 - count, 
                       SENDTO_FLAGS,
                       (const struct sockaddr*)&addr6, sizeof(_addr6));
#endif
        if (res <= 0)
          throw ConnectionClosed("Connection Closed", HERE);
        count += res;
      }
#ifdef LIBSOCKET_WIN
    delete[] buf;
#endif
  }
std::string Network::NetSocket::read ( int &  port,
std::string &  host,
int  timeout 
)

Get a line from socket and store client hostname and port in port and host variable (with a timeout on listen)

Definition at line 519 of file netsocket.cc.

References Network::Socket::_proto_kind, _read_line(), _read_line_bin(), Network::Socket::_set_timeout(), Network::Socket::_socket, Network::Socket::_state_timeout, and Network::binary.

  {
    if (_proto_kind == binary)
      {
        _set_timeout(true, _socket, timeout);
        return _read_line_bin(_socket, port, host, 0);
      }
    else
      {
        _state_timeout = timeout;
        return _read_line(_socket, port, host);
      }
  }
std::string Network::NetSocket::read ( ) [virtual]

function used by >> operator (read a string on current socket)

Implements Network::Socket.

Definition at line 533 of file netsocket.cc.

References Network::Socket::_proto_kind, _read_line(), _read_line_bin(), Network::Socket::_socket, and Network::binary.

Referenced by Network::TcpSocket::_read_line_bin().

  {
    if (_proto_kind == binary)
      return _read_line_bin(_socket, 0);
    else
      return _read_line(_socket);
  }
std::string Network::NetSocket::read ( int  timeout) [virtual]

read a string with a timeout

Implements Network::Socket.

Definition at line 541 of file netsocket.cc.

References Network::Socket::_proto_kind, _read_line(), _read_line_bin(), Network::Socket::_set_timeout(), Network::Socket::_socket, Network::Socket::_state_timeout, and Network::binary.

  {
    if (_proto_kind == binary)
      {
        _set_timeout(true, _socket, timeout);
        return _read_line_bin(_socket, 0);
      }
    else
      {
        _state_timeout = timeout;
        return _read_line(_socket);
      }
  }
std::string Network::NetSocket::read ( int &  port,
std::string &  host 
)

Get a line from socket and store client hostname and port in port and host variable.

Definition at line 511 of file netsocket.cc.

References Network::Socket::_proto_kind, _read_line(), _read_line_bin(), Network::Socket::_socket, and Network::binary.

  {
    if (_proto_kind == binary)
      return _read_line_bin(_socket, port, host, 0);
    else
      return _read_line(_socket, port, host);
  }
std::string Network::NetSocket::readn ( int  timeout,
unsigned int  size 
) [virtual]

read a string with a timeout

Parameters:
sizerepresente the number of byte to read

Implements Network::Socket.

Definition at line 583 of file netsocket.cc.

References Network::Socket::_buffer, _read_line_bin(), Network::Socket::_set_timeout(), and Network::Socket::_socket.

  {
    if (!size || size > _buffer.size())
      _set_timeout(true, _socket, timeout);
    // _read_line_bin is bufferised with the same buffer as textual
    // protocols, so this function can be used for binary and text
    // protocols.
    return _read_line_bin(_socket, size);
  }
std::string Network::NetSocket::readn ( unsigned int  size) [virtual]

read a string from socket

Parameters:
sizerepresente the number of byte to read

Implements Network::Socket.

Definition at line 575 of file netsocket.cc.

References _read_line_bin(), and Network::Socket::_socket.

  {
    // _read_line_bin is bufferised with the same buffer as textual
    // protocols, so this function can be used for binary and text
    // protocols.
    return _read_line_bin(_socket, size);
  }
std::string Network::NetSocket::readn ( int &  port,
std::string &  host,
unsigned int  size 
)

Get a line from socket and store client hostname and port in port and host variable.

Parameters:
sizerepresente the number of byte to read

Definition at line 555 of file netsocket.cc.

References _read_line_bin(), and Network::Socket::_socket.

  {
    // _read_line_bin is bufferised with the same buffer as textual
    // protocols, so this function can be used for binary and text
    // protocols.
    return _read_line_bin(_socket, port, host, size);
  }
std::string Network::NetSocket::readn ( int &  port,
std::string &  host,
int  timeout,
unsigned int  size 
)

Get a line from socket and store client hostname and port in port and host variable (with a timeout on listen)

Parameters:
sizerepresente the number of byte to read

Definition at line 564 of file netsocket.cc.

References Network::Socket::_buffer, _read_line_bin(), Network::Socket::_set_timeout(), and Network::Socket::_socket.

  {
    if (!size || size > _buffer.size())
      _set_timeout(true, _socket, timeout);
    // _read_line_bin is bufferised with the same buffer as textual
    // protocols, so this function can be used for binary and text
    // protocols.
    return _read_line_bin(_socket, port, host, size);
  }
void Network::NetSocket::writeto ( const std::string &  str,
const std::string &  host,
int  port 
) [virtual]

function used to send a msg to a specific host (UDP)

Definition at line 502 of file netsocket.cc.

References Network::Socket::_proto_kind, Network::Socket::_socket, _write_str(), _write_str_bin(), and Network::binary.

  {
    if (_proto_kind == binary)
      _write_str_bin(_socket, str, host, port);
    else
      _write_str(_socket, str, host, port);
  }

Member Data Documentation


The documentation for this class was generated from the following files: