Alors pour commencer, je débute complétement en réseau. Histoire d'apprendre à manipuler les sockets, j'ai tenter de coder une structure Serveur/Client. Je voudrais que le serveur commence par envoyer un message, le client le reçoit, l'affiche, et envoi ensuite au serveur un autre message que le serveur affichera lui aussi par la suite. Voici le code du serveur :
#include <iostream>
#include <SFML/Network.hpp>
using namespace sf;
using namespace std;
int main()
{
IPAddress Address1 = IPAddress::GetLocalAddress();
char buffer[128];
IPAddress Sender;
size_t received;
unsigned short Port = 4567;
SocketUDP socket2;
cout << "Socket creee" << endl;
if(!socket2.Bind(Port))
cout << "Erreur lors de la liaison avec le port " << Port << endl;
else
cout << "Socket liee " << endl;
if(socket2.Receive(buffer, sizeof(buffer), received, Sender, Port) != Socket::Done)
cout << "Le message n'a pas pu etre reçu" << endl;
else
cout << "Le message a ete recu" << endl;
cout << "Envoyeur : "<< Sender << " Port : " << Port;
cin >> buffer;
if(socket2.Send(buffer, sizeof(buffer), Address1, Port) != Socket::Done)
cout << "Le message n'as pas pu etre envoyer." << endl;
else
cout << "Paquet envoye..." << endl;
socket2.Close();
cin >> Sender;
return 0;
}
Et celui du client :
#include <iostream>
#include <SFML/Network.hpp>
using namespace sf;
using namespace std;
int main()
{
IPAddress Address1 = IPAddress::GetLocalAddress();
IPAddress Sender;
size_t received;
string AdresseIP;
AdresseIP = Address1.ToString();
unsigned short Port = 4567;
SocketUDP socket1;
char buffer[128];
if(socket1.Send(buffer, sizeof(buffer), Address1, Port) != Socket::Done)
cout << "Le message n'as pas pu etre envoyer." << endl;
else
cout << "Message envoye..." << endl;
socket1.Close();
SocketUDP socket2;
if(!socket2.Bind(Port))
cout << "Erreur lors de la liaison avec le port " << endl;
else
cout << "Socket liee " << endl;
if(socket2.Receive(buffer, sizeof(buffer), received, Sender, Port) != Socket::Done)
cout << "Le message n'a pas pu etre recu" << endl;
else
cout << "Envoyeur : "<< Sender << "paquet : " << buffer << endl ;
socket2.Close();
cout << AdresseIP;
cin >> AdresseIP;
return 0;
}
Tout marche bien jusqu'à que le serveur envoie le 2nd paquet, mais le client ne l'affiche pas. Pourquoi ?