70 "stream_client_socket::rcv() - Socket has already been shut down!",
76 "stream_client_socket::rcv() - Socket is not connected!",
false);
78 if (buf == NULL || len == 0)
81 "stream_client_socket::rcv() - Buffer or length is null!",
false);
85 if (-1 == (recvd = ::recv(
sfd, buf, len, flags))) {
86 if (is_nonblocking && errno == EWOULDBLOCK)
91 "stream_client_socket::rcv() - Error while reading!");
119 "stream_client_socket::operator>>(std::string) "
120 "- Socket has already been shut down!",
123 using std::unique_ptr;
124 unique_ptr<char[]> buffer(
new char[dest.size()]);
126 memset(buffer.get(), 0, dest.size());
128 if (sock.
sfd == -1) {
130 ">>(std::string) input: Socket not connected!",
134 if (-1 == (read_bytes = read(sock.
sfd, buffer.get(), dest.size()))) {
135 if (sock.is_nonblocking && errno == EWOULDBLOCK) {
141 ">>(std::string) input: Error while reading!");
144 if (read_bytes <
static_cast<ssize_t
>(dest.size()))
145 dest.resize(read_bytes);
149 dest.assign(buffer.get(), read_bytes);
173 "stream_client_socket::operator<<(const char*) "
174 "- Socket has already been shut down!",
178 "<<(const char*) output: Socket not connected!",
182 "<<(const char*) output: Null buffer given!",
185 size_t len = strlen(str);
187 if (-1 == write(sock.
sfd, str, len))
189 "<<(const char*) output: Write failed!");
212 "stream_client_socket::operator<<(std::string) "
213 "- Socket has already been shut down!",
217 "<<(std::string) output: Socket not connected!",
220 if (-1 == write(sock.
sfd, str.c_str(), str.size()))
222 "<<(std::string) output: Write failed!");
245 "stream_client_socket::snd() - Socket has already been shut down!",
250 "stream_client_socket::snd() - Socket not connected!",
false);
251 if (buf == NULL || len == 0)
254 "stream_client_socket::snd() - Buffer or length is null!",
false);
256 if (-1 == (snd_bytes = ::send(
sfd, buf, len, flags))) {
257 if (is_nonblocking && errno == EWOULDBLOCK)
262 "stream_client_socket::snd() - Error while sending");
279 if ((method & (LIBSOCKET_READ | LIBSOCKET_WRITE)) && (
shut_rd ==
true) &&
282 if ((method & LIBSOCKET_READ) && (
shut_rd ==
true))
return;
283 if ((method & LIBSOCKET_WRITE) && (
shut_wr ==
true))
return;
285 if (method == (LIBSOCKET_READ | LIBSOCKET_WRITE))
286 u_method = SHUT_RDWR;
287 else if (method == LIBSOCKET_READ)
289 else if (method == LIBSOCKET_WRITE)
300 "stream_client_socket::shutdown() - Could not shutdown socket");
303 if (method & LIBSOCKET_READ)
shut_rd =
true;
304 if (method & LIBSOCKET_WRITE)
shut_wr =
true;
int sfd
sfd is the sockets API file descriptor
Generic socket for active stream sockets (TCP client sockets, UNIX Stream clients)
void shutdown(int method=LIBSOCKET_WRITE)
Shut a socket down.
ssize_t rcv(void *buf, size_t len, int flags=0)
Receive data from socket.
ssize_t snd(const void *buf, size_t len, int flags=0)
Send data to socket.
stream_client_socket()
Void constructor.
Contains all functions available in the C libsocket.
Contains libsocket elements.
dgram_client_socket & operator>>(dgram_client_socket &sock, string &dest)
Receive data from connected datagram socket.
dgram_client_socket & operator<<(dgram_client_socket &sock, const char *str)
Send data to connected peer.
This class is instantiated and thrown when an error occurs. If there's an error somewhere in libsocke...