Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Réseau et multijoueurs
Réseau et multijoueurs Forum d'entraide pour le réseau et le multijoueur pour les jeux vidéo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/11/2010, 00h53   #1
Daxter06
Invité régulier
 
Inscription : février 2009
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 41
Points : 7
Points : 7
Par défaut [SFML/Reseau]Adresse IP du Serveur

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 :

Code :
1
2
 
Socket.Send(Buffer, sizeof(Buffer), "test", Port);
J'ai mis "test" ne sachant pas quoi mettre à cet endroit.

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 :
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 :
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 !!
Daxter06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2010, 11h46   #2
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 428
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 428
Points : 40 031
Points : 40 031
Bonjour,

Citation:
Envoyé par Daxter06 Voir le message
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 :

Code :
1
2
 
Socket.Send(Buffer, sizeof(Buffer), "test", Port);
J'ai mis "test" ne sachant pas quoi mettre à cet endroit.

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 !!!
À la place de "test" il faut soit mettre la nom de la machine soit l'adresse IP de la machine qui doit recevoir le message. Je me demande comme cela a pu marcher, mais bon :p
La machine qui est sensé recevoir les messages doit être à l'écoute de tels messages (un serveur normalement)
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h11.


 
 
 
 
Partenaires

Hébergement Web