#include <iostream>
#include <SFML/Network.hpp>
#define PORT 4112
using namespace std;
using namespace sf;
void emeteur(string adresse = "127.0.0.1");
void recepteur();
int main()
{
cout<<"Adresse cet l'ordinateur : "<<IPAddress::GetLocalAddress()<<endl;
cout<<"Adresse du serveur virtuel "<<IPAddress::LocalHost<<endl;
cout<<"1. Emeteur n2. Recepteur"<<endl;
//On recupere le choix de l'utilisateur
int choix;
cin>>choix;
//On agit en cosequant
if(choix == 1)
{
cout<<"Entrez l'adresse de l'ordinateur distant"<<endl;
string adresse;
cin>>adresse;
emeteur(adresse);
}
if(choix == 2)
recepteur();
return 0;
}
void emeteur(string adresse )
{
cout << "----EmEtEuR----" << endl;
//On definie l'adresse du serveur
IPAddress addressServer = adresse;
if(!addressServer.IsValid())
{
cout<<"L'adresse demandee n'est pas valide"<<endl;
return;
}
//On cree un socket pour emetre un message sur le reseau
SocketUDP socket;
string message = "Initiation de l'envoi de messages";
do
{
//On cree un packet pour recevoir le message
Packet packet;
//demande a recupere le message
getline(cin, message);
//On met le message dans le packet
packet<<message;
//On recupere le message
if(socket.Send(packet, addressServer, PORT) != Socket::Done)
cout<<"Erreur le message ne peut etre envoye"<<endl;
else
cout<<"Le message suivant a ete envoye n"<<message<<endl;
}
while(message != "exit");
system("PAUSE");
//On detruit le socket
socket.Close();
}
void recepteur()
{
cout << "----ReCePtEuR----" << endl;
//On cree un socket pour recevoir un message
SocketUDP socket;
//On dis au socket d'arreter de bloquer le programme pour recevoir des donnees
//socket.SetBlocking(false);
if(!socket.Bind(PORT))
{
cout<<"Impossible de se lie au port"<<endl;
return;
}
//On cree des variables pour acceuillir le message
string message;
size_t recived;
IPAddress emeteur;
do
{
Packet packet;
//On recupere les messages
if(socket.Receive(packet, emeteur) != Socket::Done)
cout<<"Impossible de recevoir un message"<<endl;
packet >> message;
cout<<"Vous avez recu le message suivant de : "<<emeteur<<"n"<<message<<endl;
}
while(message != "exit");
system("PAUSE");
//On detruit le socket
socket.Close();
}