30 #include <sys/types.h>
31 #include <sys/socket.h>
36 #include <netinet/in.h>
37 #include <netinet/ip.h>
38 #include <arpa/inet.h>
58 fd_ = socket(AF_LOCAL, SOCK_STREAM, 0);
60 fd_ = socket(AF_LOCAL, SOCK_DGRAM, 0);
62 fd_ = socket(AF_INET, SOCK_STREAM, 0);
64 fd_ = socket(AF_INET, SOCK_DGRAM, 0);
66 ERROR(
"Error: protocol unkown");
67 throw std::runtime_error (
"Protocol unknown");
70 ERROR(
"Error when creating socket");
71 throw std::runtime_error (
"Socket error");
133 ERROR(
"Accept not available!");
134 throw std::runtime_error(
"Accept not available");
137 fd_ =
::accept((dynamic_cast<PosixSocket*> (sock))->
fd_, NULL, 0);
139 ERROR(
"Error in accept()!");
140 throw std::runtime_error(
"Accept error");
156 ERROR(
"Listen not available!");
157 throw std::runtime_error(
"Listen not available");
159 if (::
listen(
fd_, max_pending_connections) < 0) {
161 ERROR(
"Error when listening");
162 throw std::runtime_error (
"Listen error");
177 DEBUG(
"Local protocol found");
178 struct sockaddr_un serv_addr;
179 bzero((
char *) &serv_addr,
sizeof(serv_addr));
180 serv_addr.sun_family = AF_LOCAL;
181 strncpy(serv_addr.sun_path, addr.
getAddress().c_str(),
182 sizeof(serv_addr.sun_path) - 1);
183 if (::
bind(
fd_, (
struct sockaddr *) &serv_addr,
sizeof(serv_addr)) == 0)
186 DEBUG(
"Network protocol found");
187 struct sockaddr_in serv_addr;
188 bzero((
char *) &serv_addr,
sizeof(serv_addr));
189 serv_addr.sin_family = AF_INET;
190 serv_addr.sin_port = htons((dynamic_cast<const ip4::tcp::address*>(&addr))->getPort());
191 serv_addr.sin_addr.s_addr = INADDR_ANY;
192 if (::
bind(
fd_, (
struct sockaddr *) &serv_addr,
sizeof(serv_addr)) == 0)
195 ERROR(
"Unknown protocol found");
200 ERROR(
"Error when binding socket");
201 throw std::runtime_error (
"Bind error");
216 struct sockaddr_un serv_addr;
217 bzero((
char *) &serv_addr,
sizeof(serv_addr));
218 serv_addr.sun_family = AF_LOCAL;
219 strncpy(serv_addr.sun_path, addr.
getAddress().c_str(),
sizeof(serv_addr.sun_path) - 1);
220 if (::
connect(
fd_, (
struct sockaddr *) &serv_addr,
sizeof(serv_addr)) == 0)
223 struct sockaddr_in serv_addr;
224 bzero((
char *) &serv_addr,
sizeof(serv_addr));
225 serv_addr.sin_family = AF_INET;
226 serv_addr.sin_port = htons((dynamic_cast<const ip4::tcp::address*>(&addr))->getPort());
231 bcopy(&add, &serv_addr.sin_addr.s_addr,
sizeof(add));
233 if (::
connect(
fd_, (
struct sockaddr *) &serv_addr,
sizeof(serv_addr)) == 0)
239 ERROR(
"Error when creating client socket");
240 throw std::runtime_error (
"Client socket error");