Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - farresito

#291
ASM / Re: Metodo Burbuja en ASM
30 Junio 2011, 19:01 PM
En el foro de flatassembler.net están todos los métodos. Es el foro oficial de FASM. Echa una ojeadita.
#292
Tengo uno en inglés. Si lo quieres te lo paso. Está francamente bien.
#293
Aquí no se facilitan códigos. El error está en que cin lo que hace es guardar en la variable indicada cualquier valor que introduces. En ningún caso debes, dentro del cin, asignarle un valor a una variable.

Estás haciendo errores muy básicos. Cómo te han dicho, léete un tutorial de C/C++, hay demasiados por internet.
#294
Yo empezaría con Sockets, que es lo que hice yo, y más tarde, puedes intentar implementar un crypter sencillo con ROT13 o por el estilo.

Hay mucha diversidad ahí. Busca un proyecto que creas que necesites, porque es el mejor modo de ver lo que hay que añadir al proyecto, lo que falta, etc.

Lee código, que es cómo se aprende, y practica con ejemplos :)

Un abrazo.
#295
Foro Libre / Re: test coeficiente intelectual
23 Mayo 2011, 18:05 PM
Cita de: 4rm4ndo en 21 Mayo 2011, 16:02 PM
Weno pasemos a algo más serio yo no me atrevo con esto me da flojera...

http://www.psicoactiva.com/tests/testci.htm

A ver quien se atreve con este test  ;D  ;D  ;D  ;D
136
#296
Las listas son estructuras que señalan a otras estructuras, si no recuerdo mal. Lo que kronos quiere decirte (hasta lo que entendi) es lo siguiente :

Haces una estructura que tenga 2 campos.

-Una con el valor introducido
-Otra que sea el puntero a otra estructura.

Por ejemplo, fíjate en la imagen siguiente:



En este caso tendrías una estructura con los campos que te he dicho. El primer campo de cada estructura (en este caso 12, 99, 37) almacenaría el valor introducido y el campo con el punto es el que señala la otra estructura. Así se enlazan.


Ahora bien, yo no sabría que responderte en cuanto a una solución, básicamente porque no acabo de entender que quieres. Si quieres simplemente guardar números haces un array que guarde números y después accedes a los valores con su índice:
Código (cpp) [Seleccionar]

int numeros [] = {Valores guardados};
//Accedes así
numeros[indice] //que es la posición del numero


Tambien podrias aplicarlo con un bucle. Pides antes 'cuantos numeros quieres introducir?' (por ejemplo) y haces un for (int 1; i < X ; i++) donde x es la cantidad pedida. Dentro del for usarías un numeros[X] = valor, porque así te queda en cada iteración un índice diferente y no se sobrescribe.

Un abrazo. Si me equivoqué en algo diganmelo.

Saludos.

PD: Es algo rudimentario pero no se que quieres hacer, no llegué a entender a la perfección
#297
Gracias por respinder Sagrini.

De hecho, ya sabía usar más o menos la forma antigua, que es la que usas tu, con el sockaddr_in, pero recientemente sacaron la estructura addrinfo, que tiene la función getaddrinfo que te lo rellena todo, y que es más recomendado, segun comentan en la web oficial del POSIX. Es por ello que me decidí a aprenderlo, porque, a más, si te fijas, no tienes que usar htons, hacer cambios con (struct sockaddr *)... etc. No se, se ve el código más limpio en mi opinión.

Puedes echar una ojeada en la web de beej: http://beej.us/guide/bgnet/

En fin, agradezco de verdad que me hayas respondido ;). Ya veré que es lo que realmente le pasa al trasto este y a ver si se puede arreglar, postear el código y aprender de esta forma nueva :)

Un abrazo!
#298
Holas a todos,

Llevo bastante tiempo con un error que me da y no lo logro resolver. NO ES DE COMPILAR, porque me compila sin errores, sino que cuando ejecuto el programa me marca 'error en BIND', que es el IF que tengo puesto, pero creo que todo está bien. El código no está terminado del todo, porque estaba haciendo pruebas en aplicar la estructura storage en vez de una _in normal, pero hasta bind no deberia haber problema

Les dejo el código a ver si pueden ver algun error.

Código (cpp) [Seleccionar]
#include <iostream>
#include <signal.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

int main()
{
    int desc_serv, desc_cliente //Descriptores;
    int rv //Comprueba el estado de GETADDRINFO;
    struct addrinfo structserv //Estructura usada en GETADDRINFO;
    struct addrinfo *resultados //Estructura resultante de GETADDRINFO;
    struct addrinfo structcliente //Estructura del CLIENTE;

    memset(&structserv, 0, sizeof (structserv));


    structserv.ai_family = AF_UNSPEC;
    structserv.ai_socktype = SOCK_STREAM;
    structserv.ai_flags = AI_PASSIVE;

    //GetAddrInfo
    if ((rv = getaddrinfo(NULL, "16969", &structserv, &resultados)) != 0)
    {
        cout << "Error en GETADDRINFO" << endl;
        exit(1);
    }

    //Socket
    if ((desc_serv = socket(resultados->ai_family, resultados->ai_socktype, resultados->ai_protocol) == -1))
    {
        cout << "Error en SOCKET" << endl;
        exit(1);
    }

    //Bind
    if (bind(desc_serv, resultados->ai_addr, resultados->ai_addrlen) == -1)
    {
        cout << "Error en BIND" << endl;
        exit(1);
    }

    //Listen
    if ((listen(desc_serv, 10)) == -1)
    {
        cout << "Error en LISTEN" << endl;
        exit(1);
    }

    //Accept
    if ((desc_cliente = accept(desc_serv, structcliente.ai_addr, 0)) == -1)
    {
        cout << "Error en ACCEPT" << endl;
        exit(1);
    }
    else
    {
        cout << "¡Funciona!" << endl;
    }
}


Un abrazo!
#299
Gracias por responder, poitier. He hecho el cambio de cliente por desc_cliente en la función accept y me marca prácticamente los mismos errores. La verdad no se que pasa.

Te entendí bien, y hice el cambio para que lo que retornase la función accept se fuera a la variable descriptora de cliente.

Un abrazo. Aprecio de verdad vuestra ayuda :-*
#300
Acabo de empezar con Sockets y generalmente entiendo todo, pero no logro arreglar un error en accept(), aun habiendo leído otros ejemplos. Agradecería muchísimo a quien pudiese echarme una mano, pues llevo un tiempo y no se que pasa. El ejemplo está ordenadito, así que no debería ser un problema entenderlo.

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <stdio.h>


using namespace std;

int main()
{
    //Estructuras
    struct sockaddr_in servidor;
    struct sockaddr_in cliente;

    //Otras variables
    int desc_cliente, desc_servidor;
    int puerto = 3550, max_conex = 2, size;

    //Funcinn SOCKET
    if (desc_servidor = socket(AF_INET, SOCK_STREAM, 0) == -1)
    {
        printf("Hubo un error en SOCKET");
        exit (-1);
    }

    //Estructura SOCKADDR_IN
    servidor.sin_family = AF_INET;
    servidor.sin_port = htons(puerto);
    servidor.sin_addr.s_addr = INADDR_ANY;
    memset(servidor.sin_zero, 0, 8);

    //Funcion BIND
    if (bind(desc_servidor, (struct sockaddr*) &servidor, sizeof(struct sockaddr)) == -1)
    {
        printf("Error en BIND");
        exit(-1);
    }

    //Funcion listen
    if (listen(desc_servidor, max_conex) == -1)
    {
        printf("Error en LISTEN");
        exit(-1);
    }

    //Bucle + accept
    while (1)
    {
        size = sizeof(struct sockaddr_in);
        if (cliente = accept(desc_servidor, (struct sockaddr *) &cliente, &size))
        {
            printf("Error en ACCEPT");
            exit(-1);
        }

        printf("Tienes una conexión de %s \n", inet_ntoa(cliente.sin_addr));

        send(desc_cliente, "Bienvenido al servidor \n", 22, 0);
        close (desc_cliente);
    }

}


Los errores que me marca son los siguientes:
Código (txt) [Seleccionar]
/home/farresito/Documentos/project/main.cpp||In function 'int main()':|
/home/farresito/Documentos/project/main.cpp|25|warning: suggest parentheses around assignment used as truth value|
/home/farresito/Documentos/project/main.cpp|55|error: invalid conversion from 'int*' to 'socklen_t*'|
/home/farresito/Documentos/project/main.cpp|55|error:   initializing argument 3 of 'int accept(int, sockaddr*, socklen_t*)'|
/home/farresito/Documentos/project/main.cpp|55|error: no match for 'operator=' in 'cliente = accept(desc_servidor, ((sockaddr*)(& cliente)), ((socklen_t*)(& size)))'|
/usr/include/netinet/in.h|226|note: candidates are: sockaddr_in& sockaddr_in::operator=(const sockaddr_in&)|
||=== Build finished: 3 errors, 1 warnings ===|


Otra cosilla, porque se hace el bucle? Para que hasta que no haga un accept no termine? No acabo de entenderlo...

Un abrazo de antemano. Muchas gracias por el soporte que me habéis dado hasta ahora.

Saludos