Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Inscrit en
    février 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : février 2009
    Messages : 41
    Points : 8
    Points
    8

    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 !!

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

    Avatar de LittleWhite
    Homme Profil pro Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    16 681
    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 : 16 681
    Points : 85 980
    Points
    85 980

    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •