Buenas. Estoy haciendo un servidor de pruebecilla, y preparandome la funcion que me inicializaría socket y devolvería descriptor, me ha sucedido un error bastante extraño con la funcion socket().
Estoy siguiendo multitud de tutoriales, he mirado mucha documentación y nada, llevo con esto toda la noche (probablemente sea un fallo tonto, pero no caigo).
Aquí dejo el código:
Código PHP:
# include "net.hpp"
int Net::StartSocket(int port)
{
struct sockaddr_in address;
struct sockaddr Cliente;
socklen_t Longitud_Cliente;
struct servent *_port;
int handler;
/*
* se abre el socket
*/
handler = socket(AF_INET, SOCK_STREAM, 0);
if (handler == -1)
return -1;
_port = getservbyport(port, "tcp");
if (_port == NULL)
return -1;
/*
* Se rellenan los campos de la estructura Direccion, necesaria
* para la llamada a la funcion bind()
*/
address.sin_family = AF_INET;
address.sin_port = _port->s_port;
address.sin_addr.s_addr = INADDR_ANY;
if (bind(handler, (struct sockaddr *)&address, sizeof(address)) == -1)
{
close (handler);
return -1;
}
/*
* Se avisa al sistema que comience a atender llamadas de clientes
*/
if (listen (handler, 0) == -1)
{
close (handler);
return -1;
}
/*
* Se devuelve el descriptor del socket servidor
*/
return handler;
}
Seguramente el codigo sea de lo más absurdo. He toqueteado miles de cosas...
Sé que el error está en socket porque he ido cambiando los valores de retorno de -1 a 0 uno por uno, y es en ese punto donde siempre me daba error.
¿Alguien tiene idea?
EDIT: De paso aprovecho para saludar, es mi primer post en Foros del Web, aunque llevaba tiempo solucionandome la vida este foro, jejeje