Bonjour à tous, dans l'optique de programmer une application réseau, j'ai suivi les tutoriaux sur les sockets en SFML sur le site officiel. Tout semble bien aller, mais j'ai un problème :
en effet, lors de l'envoi des données par le client au serveur en mode UDP, je ne sais pas quel adresse mettre :
J'ai mis "test" ne sachant pas quoi mettre à cet endroit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Socket.Send(Buffer, sizeof(Buffer), "test", Port);
Sachant qu'en mettant cette chaîne "test", l'envoi des données sur le port marche bien, mais seulement sur mon ordinateur (avec l'adresse interne de l'ordinateur) : dès que je copie colle mon code sur un autre ordi, bien connecté à Internet, et que j'envoie mon contenu sur le port pourtant correspondant, avec ce nom "test", il ne passe rien, mon serveur ne réagit pas...
Alors, je pensais qu'on avait seulement besoin du port pour faire des envois UDP, ainsi envoyer l'IP par le port pour ensuite l'utiliser, mais là je ne sais pas trop comment faire. Je pense ne pas être le seul à avoir eu ce problème (enfin j'espère !) voilà donc si vous avez une idée, n'hésitez pas !!!
Voici tout de même du code si ça vous intéresse, mais il est tiré du tutoriel, et comme dit précedemment, il marche en local sur un ordi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 #include "Network.h" Network::Network() { Port = 4452; } bool Network::Send(char *Buffer) { // adresseServeur = sf::IPAddress(88, 183, 68, 121); if(Socket.Send(Buffer, sizeof(Buffer), "rien", Port) != sf::Socket::Done) { return false; } else return true; } bool Network::Receive() { char Buffer[128]; if(!Socket.Bind(Port)) { cout << "Impossible de binder le socket au port " << Port << endl; return false; } else { if(Socket.Receive(Buffer, sizeof(Buffer), Received, Sender, Port) != sf::Socket::Done) { cout << "Problème lors de la réception" << endl; return false; } else { // On affiche l'adresse et le port de l'expéditeur std::cout << Sender << ":" << Port << std::endl; // On affiche le message reçu std::cout << Buffer << std::endl; // "Hi guys !" return true; } } Send(Buffer); } void Network::Close() { Socket.Close();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 class Network { public: //Constructeur Network(); //Envoie des données bool Send(char *Buffer); //Reception bool Receive(); void Close(); protected: //Adresse sf::IPAddress ip; sf::IPAddress Sender; sf::IPAddress adresseServeur; //Port unsigned short Port; //Reception std::size_t Received; //Socket sf::SocketUDP Socket; };
Merci d'avance !!
Partager