|
libsocket 1.5
|
This class represent an abstract socket connection (udp | tcp server | tcp client) More...
#include <netsocket.hh>
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)
| |||||||||
| int | _bind (int port, const std::string &host) | ||||||||
Bind a UDP server
| |||||||||
| int | _bind (int port) | ||||||||
Bind a TCP server
| |||||||||
| int | _accept (int port, int server_socket) const | ||||||||
Wait for a client
| |||||||||
| 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
| |||||||||
| std::string | _read_line (int socket) | ||||||||
Get a line from socket (when used with textual protocol)
| |||||||||
| 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)
| |||||||||
| 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)
| |||||||||
| virtual std::string | _read_line_bin (int socket, unsigned int size)=0 | ||||||||
Get a line from socket (when used with binary protocol)
| |||||||||
| 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)
| |||||||||
| 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)
| |||||||||
Protected Attributes | |||||||||
| int | _port | ||||||||
This class represent an abstract socket connection (udp | tcp server | tcp client)
Definition at line 33 of file netsocket.hh.
| Network::NetSocket::NetSocket | ( | SOCKET_KIND | kind, |
| SOCKET_VERSION | version = V4 |
||
| ) | [inline] |
Definition at line 36 of file netsocket.hh.
| Network::NetSocket::NetSocket | ( | SOCKET_KIND | kind, |
| PROTO_KIND | pkind, | ||
| SOCKET_VERSION | version = V4 |
||
| ) | [inline] |
Definition at line 40 of file netsocket.hh.
| virtual Network::NetSocket::~NetSocket | ( | ) | [inline, virtual] |
Definition at line 45 of file netsocket.hh.
{}
| int Network::NetSocket::_accept | ( | int | port, |
| int | server_socket | ||
| ) | const [protected] |
Wait for a client
| AcceptError | when 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
| SocketError | when socket libc function return a negative value |
| Exception | if 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
| SocketError | when socket libc function return a negative value |
| SetsockoptError | when setsockopt libc function return a negative value |
| BindError | when bind libc function return a negative value |
| Exception | if 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
| ConnectError | when 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)
| HostnameError | when 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)
| NoConnection | when there is no open socket |
| ConnectionClosed | when 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)
| NoConnection | when there is no open socket |
| ConnectionClosed | when there is no more connection |
| GetpeernameError | when 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)
| NoConnection | when there is no open socket |
| ConnectionClosed | when there is no more connection |
| GetpeernameError | when getpeername libc function return a negative value. |
Implemented in Network::TcpSocket, and Network::UdpSocket.
| 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)
| NoConnection | when there is no open socket |
| ConnectionClosed | when 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)
| NoConnection | when there is no open socket |
| ConnectionClosed | when 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)
| NoConnection | when there is no open socket |
| ConnectionClosed | when 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
| size | represente 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
| size | represente 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.
| size | represente 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)
| size | represente 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);
}
int Network::NetSocket::_port [protected] |
Definition at line 161 of file netsocket.hh.
Referenced by Network::TcpSocket::accept(), Network::UdpSocket::connect(), Network::TcpSocket::connect(), and Network::TcpSocket::get_ip().