Sockets, Mandando unos números y el servidor haciendo la operación.

Iniciado por anonimo12121, 21 Junio 2012, 10:42 AM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

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;

}
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

0xDani

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

anonimo12121

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

X3R4CK3R

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

anonimo12121

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;

}
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

X3R4CK3R

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

anonimo12121

xD yo he puesto los dos para hacerlo más rápido , pero te doy la razón :) go Skype
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

DaniellesSchaffer

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?