¿y las cabeceras?¿se han ido a por tabaco?<br><br><div><span class="gmail_quote">2008/1/30, nree <<a href="mailto:p_westermani@hotmail.com">p_westermani@hotmail.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hola gente!!!<br><br>trabajo con eclipse en un ubuntu y estoy haciendo un programilla con sockets. Para empezar lo de siempre, un servidor concurrente y un cliente que pide peticiones. Mi problema viene al crear los procesos hijos, se supone que envian al cliente un saludo y listo, pero... me tira el perror al hacer el send y despues de un rato lo hace. Es decir, me explico, el servidor se queda un rato con "bad file descriptor" y despues aparece en el cliente el mensaje. Y ademas la concurrencia no funciona.<br>
<br>Os dejo los codigos...<br><br>servidor.cpp<br><br>int main(void) {<br><br>        int sock;<br>        int sock_dialog;<br>        struct sockaddr_in dir_ser;<br>        struct sockaddr_in dir_cli;<br>        int numbytes;// numbytes2;<br>
        int yes=1;// conectado=0;<br>        socklen_t len;<br>        char buf[TAMBUF];<br>        //char buf2[TAMBUF];<br><br><br>        sock = socket(PF_INET, SOCK_STREAM,0);<br>        if (sock < 0)<br>        {<br>
                perror("error de creación de socket");<br>                //exit(1);<br>        }<br>        else<br>        {<br>                puts("socket creado...");<br>        }<br><br>        dir_ser.sin_family = PF_INET;<br>
        dir_ser.sin_addr.s_addr = htonl (INADDR_ANY);<br>        dir_ser.sin_port = htons (PORT);<br>        memset(dir_ser.sin_zero, '\0', sizeof dir_ser.sin_zero);<br><br>        if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == -1)<br>
        {<br>                perror("setsockopt");<br>                //exit(1);<br>        }<br><br>        if (bind(sock, (struct sockaddr *)&dir_ser,sizeof dir_ser)< 0)<br>        {<br>                perror("error en la asignación de dirección");<br>
                //exit(1);<br>        }<br>        else<br>        {<br>                puts("asignando direccion...");<br>        }<br><br>        if (listen (sock, NUM_CON) < 0)<br>        {<br>                perror("error en la escucha");<br>
                //exit(1);<br>        }else<br>                puts("socket a la escucha...");<br><br>        while(1)<br>        {<br>                len = sizeof dir_ser;<br>                sock_dialog = accept(sock, (struct sockaddr *) &dir_cli, &len);<br>
                if (!fork())<br>                {<br>                        shutdown(sock,2);<br>                        strcpy(buf, "respuesta desde servidor...");<br>                        numbytes = send (sock_dialog, buf, sizeof(buf), 0);<br>
                        if (numbytes < 0)<br>                        {<br>                                perror("error en la transmision de datos...");<br>                        }<br>                        //tramitarChat((struct sockaddr_in *)sock_dialog);<br>
                }<br>                shutdown(sock_dialog,2);<br>        }<br>}<br><br>cliente.cpp<br><br>int main (int argc, char *argv[])<br>{<br>        int sock, i;<br>        struct sockaddr_in dir_serv;<br>        char buf[TAMBUF];<br>
<br>        sock = socket (PF_INET, SOCK_STREAM, 0);<br>        if (sock < 0)<br>        {<br>                perror("No se ha podido crear el socket");<br>                exit (-1);<br>        }else<br>                puts ("socket creado...");<br>
<br>        dir_serv.sin_family = PF_INET;<br>        dir_serv.sin_port = htons (PORT);<br>        inet_aton(argv[1], &(dir_serv.sin_addr));<br>        memset(dir_serv.sin_zero, '\0', sizeof dir_serv.sin_zero);<br>
<br>        if (connect (sock, (struct sockaddr*)&dir_serv, sizeof dir_serv) <0)<br>        {<br>                perror("conexión no aceptada");<br>                exit(-1);<br>        }else<br>                puts("conectando con el servidor...");<br>
<br>        i = recv (sock, buf, sizeof(buf),0);<br>        puts(buf);<br>        shutdown(sock,2);<br>}<br><br>gracias por vuestra colaboracion<br><br>nere<br>_______________________________________________<br>Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br>