Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/08/2010, 23:49
Patonsky1
 
Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 2
Problema gordo con la funcion socket()

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_INETSOCK_STREAM0);
    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 *)&addresssizeof(address)) == -1)
    {
        
close (handler);
        return -
1;
    }

    
/*
    * Se avisa al sistema que comience a atender llamadas de clientes
    */
    
if (listen (handler0) == -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