63 emitter.socketFileDescriptorEmitter = socket(AF_INET, SOCK_STREAM, protocol);
64#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
65 if (
emitter.socketFileDescriptorEmitter < 0)
67 if (
emitter.socketFileDescriptorEmitter == INVALID_SOCKET)
72 emitter.emitterAddress.sin_family = AF_INET;
73 emitter.emitterAddress.sin_addr.s_addr = INADDR_ANY;
74 emitter.emitterAddress.sin_port = 0;
76 adress = inet_ntoa(
emitter.emitterAddress.sin_addr);
77 port =
emitter.emitterAddress.sin_port;
110 emitter.socketFileDescriptorEmitter = socket(AF_INET, SOCK_STREAM, protocol);
111#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
112 if (
emitter.socketFileDescriptorEmitter < 0)
114 if (
emitter.socketFileDescriptorEmitter == INVALID_SOCKET)
117 vpERROR_TRACE(
"vpServer::vpServer(const int &port_serv), cannot open socket.");
119 emitter.emitterAddress.sin_family = AF_INET;
120 emitter.emitterAddress.sin_addr.s_addr = INADDR_ANY;
121 emitter.emitterAddress.sin_port = htons(
static_cast<unsigned short>(port_serv));
123 adress = inet_ntoa(
emitter.emitterAddress.sin_addr);
134 : adress(), port(0), started(false), max_clients(10)
137 emitter.socketFileDescriptorEmitter = socket(AF_INET, SOCK_STREAM, protocol);
138#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
139 if (
emitter.socketFileDescriptorEmitter < 0)
141 if (
emitter.socketFileDescriptorEmitter == INVALID_SOCKET)
144 vpERROR_TRACE(
"vpServer::vpServer(const std::string &adress_serv,const "
145 "int &port_serv), cannot open socket.");
147 emitter.emitterAddress.sin_family = AF_INET;
148 emitter.emitterAddress.sin_addr.s_addr = inet_addr(adress_serv.c_str());
149 emitter.emitterAddress.sin_port = htons(
static_cast<unsigned short>(port_serv));
151 adress = adress_serv;
181 int serverStructLength =
sizeof(
emitter.emitterAddress);
182#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
183 int bindResult = bind(
emitter.socketFileDescriptorEmitter, (
struct sockaddr *)&
emitter.emitterAddress,
184 static_cast<unsigned int>(serverStructLength));
186 int bindResult = bind(
static_cast<unsigned int>(
emitter.socketFileDescriptorEmitter), (
struct sockaddr *)&
emitter.emitterAddress,
190 if (bindResult < 0) {
191 std::cout <<
"Error id : " << bindResult << std::endl;
192 std::stringstream errorMessage;
193 errorMessage <<
"vpServer::vpServer(), cannot bind to port";
195 errorMessage << port;
196 errorMessage <<
" The port may be already used.";
205 if (
emitter.socketFileDescriptorEmitter > 0) {
208 setsockopt(
emitter.socketFileDescriptorEmitter, SOL_SOCKET, SO_NOSIGPIPE, &set_option,
sizeof(set_option))) {
211 std::cout <<
"Failed to set socket signal option" << std::endl;
216#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
217 listen(
emitter.socketFileDescriptorEmitter,
static_cast<int>(max_clients));
219 listen(
static_cast<unsigned int>(
emitter.socketFileDescriptorEmitter),
static_cast<int>(max_clients));
222 std::cout <<
"Server ready" << std::endl;
243#ifdef TARGET_OS_IPHONE
269 else if (value == 0) {
274 vpNetwork::vpReceptor client;
275 client.receptorAddressSize =
sizeof(client.receptorAddress);
276#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
277 client.socketFileDescriptorReceptor = accept(
278 emitter.socketFileDescriptorEmitter, (
struct sockaddr *)&client.receptorAddress, &client.receptorAddressSize);
280 client.socketFileDescriptorReceptor =
281 accept(
static_cast<unsigned int>(
emitter.socketFileDescriptorEmitter), (
struct sockaddr *)&client.receptorAddress,
282 &client.receptorAddressSize);
285#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
286 if ((client.socketFileDescriptorReceptor) == -1)
288 if ((client.socketFileDescriptorReceptor) == INVALID_SOCKET)
292 client.receptorIP = inet_ntoa(client.receptorAddress.sin_addr);
293 printf(
"New client connected : %s\n", inet_ntoa(client.receptorAddress.sin_addr));
302#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
303 ssize_t numbytes = recv(
receptor_list[i].socketFileDescriptorReceptor, &deco, 1, MSG_PEEK);
305 int numbytes = recv(
static_cast<unsigned int>(
receptor_list[i].socketFileDescriptorReceptor), &deco, 1, MSG_PEEK);
309 std::cout <<
"Disconnected : " << inet_ntoa(
receptor_list[i].receptorAddress.sin_addr) << std::endl;