IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau et multijoueurs Discussion :

[SFML/Reseau]Adresse IP du Serveur


Sujet :

Réseau et multijoueurs

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 25
    Points
    25
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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 !!

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/03/2014, 20h29
  2. [SFML/Reseau]Adresse IP du Serveur
    Par Daxter06 dans le forum SFML
    Réponses: 2
    Dernier message: 16/04/2012, 15h09
  3. [Réseau] Problème pour récupérer l'adresse IP du serveur
    Par olive_le_malin dans le forum Langage
    Réponses: 5
    Dernier message: 25/12/2006, 18h06
  4. Récupérer l'adresse IP du serveur dans variable ?
    Par ZERS dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/09/2004, 15h30
  5. [Réseau] Headers vers un serveur http
    Par gexti dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 04/05/2004, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo