mirror of https://git.48k.eu/ogserver
parent
107b17a51b
commit
e3e4e6f677
|
@ -3720,13 +3720,37 @@ static void og_server_accept_cb(struct ev_loop *loop, struct ev_io *io,
|
||||||
ev_timer_start(loop, &cli->timer);
|
ev_timer_start(loop, &cli->timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int og_socket_server_init(const char *port)
|
||||||
|
{
|
||||||
|
struct sockaddr_in local;
|
||||||
|
int sd, on = 1;
|
||||||
|
|
||||||
|
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||||
|
if (sd < 0) {
|
||||||
|
syslog(LOG_ERR, "cannot create main socket\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
setsockopt(sd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(int));
|
||||||
|
|
||||||
|
local.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
local.sin_family = AF_INET;
|
||||||
|
local.sin_port = htons(atoi(port));
|
||||||
|
|
||||||
|
if (bind(sd, (struct sockaddr *) &local, sizeof(local)) < 0) {
|
||||||
|
syslog(LOG_ERR, "cannot bind socket\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
listen(sd, 250);
|
||||||
|
|
||||||
|
return sd;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct ev_loop *loop = ev_default_loop(0);
|
struct ev_loop *loop = ev_default_loop(0);
|
||||||
struct ev_io ev_io_server;
|
struct ev_io ev_io_server;
|
||||||
struct sockaddr_in local;
|
|
||||||
int socket_s;
|
int socket_s;
|
||||||
int activo=1;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
|
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
|
||||||
|
@ -3754,23 +3778,9 @@ int main(int argc, char *argv[])
|
||||||
/*--------------------------------------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------------------------------------
|
||||||
Creación y configuración del socket del servicio
|
Creación y configuración del socket del servicio
|
||||||
---------------------------------------------------------------------------------------------------------*/
|
---------------------------------------------------------------------------------------------------------*/
|
||||||
socket_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Crea socket del servicio
|
socket_s = og_socket_server_init(puerto);
|
||||||
setsockopt(socket_s, SOL_SOCKET, SO_REUSEPORT, &activo, sizeof(int));
|
if (socket_s < 0)
|
||||||
if (socket_s < 0) {
|
|
||||||
syslog(LOG_ERR, "cannot create main socket\n");
|
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
|
||||||
|
|
||||||
local.sin_addr.s_addr = htonl(INADDR_ANY); // Configura el socket del servicio
|
|
||||||
local.sin_family = AF_INET;
|
|
||||||
local.sin_port = htons(atoi(puerto));
|
|
||||||
|
|
||||||
if (bind(socket_s, (struct sockaddr *) &local, sizeof(local)) < 0) {
|
|
||||||
syslog(LOG_ERR, "cannot bind socket\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
listen(socket_s, 250); // Pone a escuchar al socket
|
|
||||||
|
|
||||||
ev_io_init(&ev_io_server, og_server_accept_cb, socket_s, EV_READ);
|
ev_io_init(&ev_io_server, og_server_accept_cb, socket_s, EV_READ);
|
||||||
ev_io_start(loop, &ev_io_server);
|
ev_io_start(loop, &ev_io_server);
|
||||||
|
|
Loading…
Reference in New Issue