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

C++ Discussion :

Utilisation des Socket


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut Utilisation des Socket
    Bon en fait je voulait juste essayer voir si j'arrivais a m'en servir et aparment non
    Donc voila pour tester je voulait faire un serveur qui affiche juste "Il y a un gugus de connecter!" quand quelqu'un se connect et vu que j'ai la flemme de monter sur mon autre pc j'ai fait un client qui se connect sur moi meme.

    Deja est-ce possible de se connecter sur soi meme bon voila mon code :

    LE CLIENT

    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
     
     
    #include <iostream>
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
     
    using namespace std;
     
    int main()
    {
        cout<<"Initialisation du client ..."<<endl;
        SOCKET sock;
        SOCKADDR_IN sin;
        sin.sin_addr.s_addr = inet_addr("10.87.14.112");
        sin.sin_family            = AF_INET;
        sin.sin_port                = htons(23);
        sock = socket(AF_INET,SOCK_STREAM,0);
        bind(sock, (SOCKADDR *)&sin, sizeof(sin));
        cout<<"Client Initialise."<<endl;
        connect(sock, (SOCKADDR *)&sin, sizeof(sin));
        cout<<"Client Connecte !"<<endl;
        system("PAUSE");
        return 0;
    }
    LE SERVEUR
    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
     
     
     
    #include <iostream>
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
     
    using namespace std;
     
    int main()
    {
        cout<<"Initialisation du serveur ..."<<endl;
        WSADATA WSAData;
        WSAStartup(MAKEWORD(2,0), &WSAData);
        SOCKET sock;
        SOCKET csock;
        SOCKADDR_IN sin;
        SOCKADDR_IN csin;
        sock = socket(AF_INET, SOCK_STREAM, 0);
        sin.sin_addr.s_addr   = INADDR_ANY;
        sin.sin_family                        = AF_INET;
        sin.sin_port                                = htons(23);
        bind(sock, (SOCKADDR *)&sin, sizeof(sin));
        cout<<"Serveur Initialise."<<endl;
        listen(sock, 0);
        while(1)
        {
            int sinsize = sizeof(csin);
            if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
            {
                cout<<"Il y a un gugus sur le serveur !"<<endl;
            }
        }
        return 0;
    }

    Bon les deux code compile bien sauf que quand j'execute le serveur puis le client , (je pense que o_O ) ca devrait afficher sur la console du serveur : "Il y a un gugus sur le serveur !" non ? :euh:

  2. #2
    Membre habitué Avatar de Ksempac
    Inscrit en
    Février 2007
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 165
    Points : 185
    Points
    185
    Par défaut
    Je connais pas suffisamment la gestion des sockets pour débugger ton code, mais deja je peux te dire 2 choses :
    - Tu peux tout a fait connecter un client et un serveur fonctionnant sur le meme PC que ce soit en lui précisant l'adresse IP reelle de ton PC comme tu l'as fait, ou plus simplement utilisant l'adresse de "loopback" : 127.0.0.1. Cette adresse IP spéciale signifie "Moi-même". Je te conseille d'utiliser la seconde solution comme cela si ton PC change d'IP ou que tu décides de changer de PC, ton programme fonctionnera toujours sans avoir a retaper a la main l'adresse IP.
    - Le serveur doit effectivement etre lancé avant le client sinon le client lancera sa requete avant meme que tu es lancé le serveur et donc yaura personne pour recevoir la requete

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta reponse,
    Quelqu'un a une idee de pourquoi sa marche pas ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Salut,
    déjà qu'est ce qui ne marche pas ?

    1/ Le serveur est-il bien en attente de connexion ? En gros est-ce que tu arrives sur le accept() ?
    2/ Le client arrive-t-il sur la fonction connect() ?
    3/ Tu ne testes aucun retour des fonctions utilisées (socket, bind, connect).
    4/ A mon avis ça ne marche pas pour la bonne simple raison que ton client n'arrive pas en connect(), car tu n'a aps itinitalisé ton utilisation des sockets (fonction WSAStartup présente chez le serveur, mais le client).

    Il faut tester les retour des fonctions !!

    @+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    C'etait bien le WSAStartup du client qu'il manquait ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utilisation des socket
    Par nadh3m dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/04/2007, 13h37
  2. [c#] Utilisation des sockets
    Par zwoke dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/09/2006, 09h28
  3. [Socket][C++]Utilisation des sockets sur internet
    Par ChriGoLioNaDor dans le forum Développement
    Réponses: 8
    Dernier message: 13/01/2006, 21h38
  4. [MFC] Faible utilisation des sockets via les MFC ?
    Par Yellowmat dans le forum MFC
    Réponses: 1
    Dernier message: 25/08/2005, 17h15
  5. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24

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