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

SDL Discussion :

[SDL_net] host et adresse ip


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de legend666
    Étudiant
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Par défaut [SDL_net] host et adresse ip
    Bonjour !

    Je n'ai pas très bien compris comment se connecter à une adresse ip (sans connaitre l'host) avec SDL_net.
    Avec la fonction SDLNet_ResolveHost(&serverIP, host, port), je me connecte à l'host port comme www.google.com ou autre, mais comment faire pour me connecter à l'addresse ip de mon choix ?


    Merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Par défaut Re: [SDL_net] host et adresse ip
    Pour ce connecté avec la SDL_net :

    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
     
     
    // connect to localhost at port 9999 using TCP (client)
    IPaddress ip;
    TCPsocket tcpsock;
     
    if(SDLNet_ResolveHost(&ip,"localhost",9999)==-1) {
        printf("SDLNet_ResolveHost: %s\n", SDLNet_GetError());
        exit(1);
    }
     
    tcpsock=SDLNet_TCP_Open(&ip);
    if(!tcpsock) {
        printf("SDLNet_TCP_Open: %s\n", SDLNet_GetError());
        exit(2);
    }
    Tu remplace localhost par www.google.com ou autre...

    Pour plus d'info sur la SDL_Net :
    http://jcatki.no-ip.org/SDL_net/

    Luther

  3. #3
    Membre averti Avatar de legend666
    Étudiant
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Par défaut
    OK, mais quand je remplace localhost par 127.0.0.1 (ou une autre adresse ip), SDL me dit qu'il ne peut se connecter à l' host ! ( Couldn't connect to remote host ).

    Merci d'avance !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Par défaut
    D'apres mes m'expériences et la doc cela fonctionne bien (je n'ai malheuresement pas le temps de faire un test)

    Peux tu poster un exemple complet qui ne fonctionne pas ?

    Luther

  5. #5
    Membre averti Avatar de legend666
    Étudiant
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Par défaut
    OK.
    Donc, cette exemple se compile très bien mais ne fonctionne pas. (n'arrive pas à trouver l'hote).

    Le .h : (net.h)
    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
    54
     
    /***
    classe permettant la connexion à un socket tcp
    */
     
    //utilisation des librairies SDL
    #include "SDL.h"
    #include "SDL_net.h"
     
    #ifndef _HTTPREADER_H_
    #define _HTTPREADER_H_
     
    #include <string>
    #include <iostream>
    using namespace std;
     
    #define MAXLEN 1024
     
    class Connection {
     
    private:
     TCPsocket socket;
     
    public:
     
     Connection();
     virtual ~Connection();
     
     /**
     * connexion sur le serveur grace à son ip et son port, 
     * retourne faux si echec à la connexion
     */
     bool open(char* host, int port);
     
     /**
     * deconnexion du serveur
     */
     void deconnection();
     
     
     /***
     * envoie un message sur le socket
     * si probleme pendant l'envoie, renvoie faux
     */
     bool send( char * msg);
     
     /**
     * reception d'un message sur le socket de la taille choisie
     * attention cette methode est bloquante tant qu'on ne recoit rien du serveur
     * envoie le nombre de byte qui ont été recu (<=0 si erreur)
     */
     int receive(char * msg, int taille);
    };
    #endif
    Et le .cpp :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    #include "SDL.h"
    #include "SDL/SDL_net.h"
    #include "net.h"
    #include <iostream.h>
    #include <stdio.h>
     
    ///////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////
     
    Connection::Connection(){
     
       //init de la lib sdl 
       if(SDL_Init(0)==-1) {
            cout << "SDL_Init: " << SDL_GetError() << endl;
      exit(1);
        }
     atexit(SDL_Quit);
     
        //init de lib sdllib
        if(SDLNet_Init()==-1) {
            cout << "SDLNet_Init: " << SDLNet_GetError() << endl;
      exit(2);
        }
        atexit(SDLNet_Quit);
    }
     
    Connection::~Connection() {
     
     SDLNet_Quit();
     SDL_Quit();
    }
     
    bool Connection::open(char* host, int port) {
     
       IPaddress serverIP;
     
       if (SDLNet_ResolveHost(&serverIP, host, port) == -1){
          printf ("serveur inconnu :\n %s\n ",SDLNet_GetError());
          return false;
       }
     
       socket=SDLNet_TCP_Open(&serverIP);
       if (!socket) {
          printf ("connexion impossible :\n %s\n ",SDLNet_GetError());
          return false;
       }
     return true;
    }
     
    void Connection::deconnection() {
     
             if (socket)
           SDLNet_TCP_Close(socket);
    }
     
    bool Connection::send( char * msg){
     
       int len=strlen(msg);
       int result=SDLNet_TCP_Send(socket, msg, len);
     
       if ( result < len) {
             printf ("probleme dans l'envoie :\n %s\n ",SDLNet_GetError());
             return false;
       }
     
       return true;
    }
     
    int Connection::receive(char * msg, int taille) {
     
      int r= SDLNet_TCP_Recv(socket, msg, taille);
     
       if (r<=0)
       {
          printf ("probleme de lecture :\n %s\n ",SDLNet_GetError());
          return r;
       }
     
       return r;
    }
     
    ///////////////////////////////////////////////////////////////////////////////
    /*
    Debut de main
    */
    ///////////////////////////////////////////////////////////////////////////////
     
    int main(int argc, char *argv[])
    {
     
      Connection con;
      char msg[16384];
      [b]con.open("127.0.0.1", 80);[/b] // la ligne contreversé
      printf("1\n");
     
      con.send("Lets try !");
      printf("2\n");
     
      con.receive(msg, 16384);
      printf("3");
     
      return 0;
    }
    Voila !

    Merci d'avance !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Par défaut
    Une remarque de C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <iostream.h> // C'est Mal !
    #include <iostream> // C'est Bien !
    Sinon chez moi cela passe, j'ai remplacer l'addresse 127.0.0.1 par 213.228.0.42 (www.free.fr)

    et j'ai comme sortie :
    1
    2

    Pour compiler :
    g++ test.cc `sdl-config --cflags --libs` -lSDL_net (sous GNU/Linux)

    Avec comme version :
    SDL : 1.2.7

    Donc peut etre un probleme de configuration de ta machine...

    Luther

  7. #7
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    il y a une fonction getIP (je ne m'en rappelle plus) quand tu teste avec localhost qui marche

    edit : oups, désolé, je n'avais pas vu la date.

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/05/2008, 07h31
  2. fichier hosts et adresse réseau
    Par rlgrand dans le forum Windows XP
    Réponses: 1
    Dernier message: 03/06/2007, 23h11
  3. SDL_net : connaitre l'adresse ip !
    Par mannaz dans le forum SDL
    Réponses: 2
    Dernier message: 27/02/2007, 20h39
  4. recuprer adresse IP et local host name
    Par einsteineuzzz dans le forum C++
    Réponses: 2
    Dernier message: 08/01/2007, 15h55
  5. Comment extraire le nom host d'un adresse DNS
    Par SkyDev dans le forum Programmation et administration système
    Réponses: 12
    Dernier message: 06/10/2006, 15h43

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