Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 21 Junio 2012, 10:42 AM

Título: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: anonimo12121 en 21 Junio 2012, 10:42 AM
Bueno pues solo estoy practicando así hago este pequeño aporte fácil.


Cliente
Código (cpp) [Seleccionar]

#include <iostream>
#include <SFML/Network.hpp>
using namespace std;
// Puerto 25569
struct Suma{
    int n1;
    int n2;
};
int main(int argc,char *argv[]){
    sf::SocketTCP Conexion;
    sf::Packet Paquete;
    while(Conexion.Connect(25569,sf::IPAddress("localhost")) !=sf::Socket::Done)cout << "Buscando servidor..."<<endl;
    cout << "Servidor encontrado." <<endl;
    //char Datos[128];
    Suma s;
    while(1){
        cout << "Escribe el primer numero: ";
        cin >> s.n1;
        cout << "Escribe el segundo numero: ";
        cin >> s.n2;
        Paquete  << s.n1 << s.n2;
        if(Conexion.Send(Paquete) != sf::Socket::Done)cout << "no se pudo mandar el mensaje";
    }
    return 0;

}


Servidor
Código (cpp) [Seleccionar]

#include <iostream>
#include <SFML/Network.hpp>
using namespace std;
// Puerto 25569

struct Suma{
    int n1;
    int n2;
};
int main(int argc,char *argv[]){
    sf::SocketTCP Conexion;
    sf::SocketTCP Client;
    sf::IPAddress ClientAddress;
    sf::Packet Paquete;
    //char Buffer[128];
    //std::size_t Received;
    Suma s;
    Conexion.Listen(25569);
    Conexion.Accept(Client,&ClientAddress);
    while(1){
        if(Client.Receive(Paquete) != sf::Socket::Done);
        else {
            Paquete.GetData();
            Paquete  >> s.n1 >> s.n2;
            cout << "Client: " <<  s.n1+s.n2<< endl;
        }
    }

    return 0;

}
Título: Re: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: 0xDani en 21 Junio 2012, 16:31 PM
¿Que libreria estas usando? No me suena SFML.
Título: Re: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: anonimo12121 en 21 Junio 2012, 17:41 PM
http://www.sfml-dev.org/

Es bastante buena :)
Título: Re: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: X3R4CK3R en 21 Junio 2012, 20:31 PM
Tú code presenta un fallo al hacer una segunda suma:
El cliente envía los 2 nuevos sumandos pero el server sólo imprime el resultado de la primera suma, una y otra vez, en lugar de la nueva suma.

Saludos
Título: Re: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: anonimo12121 en 21 Junio 2012, 20:39 PM
Somos socios XD.


Ya lo he arreglado. hay que vaciar los Packets.
Client
Código (cpp) [Seleccionar]
#include <iostream>
#include <SFML/Network.hpp>
#include <cstdio>
using namespace std;
// Puerto 25569
struct Suma{
    int n1;
    int n2;
};
int main(int argc,char *argv[]){
    sf::SocketTCP Conexion;
    sf::Packet Paquete;
    while(Conexion.Connect(25569,sf::IPAddress("localhost")) !=sf::Socket::Done)cout << "Buscando servidor..."<<endl;
    cout << "Servidor encontrado." <<endl;
    //char Datos[128];
    Suma s;
    while(1){
        cout << "Escribe el primer numero: ";
        cin >> s.n1;
        cout << "Escribe el segundo numero: ";
        cin >> s.n2;
        Paquete  << s.n1 << s.n2;
        if(Conexion.Send(Paquete) != sf::Socket::Done)cout << "no se pudo mandar el mensaje";
        Paquete.Clear();
    }
    return 0;

}

Servidor
Código (cpp) [Seleccionar]
#include <iostream>
#include <SFML/Network.hpp>
using namespace std;
// Puerto 25569

struct Suma{
    int n1;
    int n2;
};
int main(int argc,char *argv[]){
    sf::SocketTCP Conexion;
    sf::SocketTCP Client;
    sf::IPAddress ClientAddress;
    sf::Packet Paquete;
    //char Buffer[128];
    //std::size_t Received;
    Suma s;
    Conexion.Listen(25569);
    Conexion.Accept(Client,&ClientAddress);
    while(1){
        if(Client.Receive(Paquete) != sf::Socket::Done);
        else {
            Paquete.GetData();
            Paquete  >> s.n1 >> s.n2;
            cout << "Client: " <<  s.n1+s.n2<< endl;
            Paquete.Clear();
        }
    }

    return 0;

}
Título: Re: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: X3R4CK3R en 21 Junio 2012, 23:07 PM
Tan solo es necesario que se limpie el paquete del cliente, en el server es prescindible.

yo precisamente hacia ésto al contrario: solo lo limpiaba en el server xD
Título: Re: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: anonimo12121 en 21 Junio 2012, 23:53 PM
xD yo he puesto los dos para hacerlo más rápido , pero te doy la razón :) go Skype
Título: Re: Sockets, Mandando unos números y el servidor haciendo la operación.
Publicado por: DaniellesSchaffer en 14 Octubre 2015, 00:25 AM
Hola!

Estoy probando tu código y lo que hice fue meter el archivo de SFML en las librerías de Code::Blocks, pero me aparecen errores como SocketTCPno es miembro de sf. Podrías ayudarme?