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 :

sockets


Sujet :

C++

  1. #1
    MDP
    MDP est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut sockets
    Salut

    Je dois faire un petit programme qui devrait ecouter sur un socket, faire un traitement sur les paquets (eliminer quelqu'uns en fait) et ensuite les remettre en route. Un sort de filtre on peut dire...J'aimerais savoir si quelqu'un pourrait m'orienter un peu car je ne connais pas enormement sur C++....

    merci beuacoup

  2. #2
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut reponce_socket
    bonjour
    il ya deux types de socket :tcp et udp .la 1ere pour le mode connecte
    la second pour le mode non connecté
    listen permet d'ecouter une socket, voici un exemple
    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
     
    #include <stdio.h>
    #include "winsock2.h"
     
    void main() {
     
      //----------------------
      // Initialize Winsock
      WSADATA wsaData;
      int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
      if (iResult != NO_ERROR)
        printf("Error at WSAStartup()\n");
     
      //----------------------
      // Create a SOCKET for listening for
      // incoming connection requests.
      SOCKET ListenSocket;
      ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
      if (ListenSocket == INVALID_SOCKET) {
        printf("Error at socket(): %ld\n", WSAGetLastError());
        WSACleanup();
        return;
      }
     
      //----------------------
      // The sockaddr_in structure specifies the address family,
      // IP address, and port for the socket that is being bound.
      sockaddr_in service;
      service.sin_family = AF_INET;
      service.sin_addr.s_addr = inet_addr("127.0.0.1");
      service.sin_port = htons(27015);
     
      if (bind( ListenSocket, 
        (SOCKADDR*) &service, 
        sizeof(service)) == SOCKET_ERROR) {
        printf("bind() failed.\n");
        closesocket(ListenSocket);
        return;
      }
     
      //----------------------
      // Listen for incoming connection requests 
      // on the created socket
      if (listen( ListenSocket, 1 ) == SOCKET_ERROR)
        printf("Error listening on socket.\n");
     
      printf("Listening on socket...\n");
      WSACleanup();
      return;
    }

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut
    tu peut voir ce lien

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/listen_2.asp

  4. #4
    MDP
    MDP est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    merci pour l'exemple du socket. J'ai une petite idée maintenant de comment faire echanger des messages entre un client et un serveur. Par contre je me pose des questions par rapport à ce que je dois faire :

    1) Si je connecte un socket à une appli qui m'envoie des paquets ip, j'ai du binaire ? comment faire pour analyser les paquets ? (moi je voudrais filtrer en fait par rapport à l'adresse ip destination).

    2) En supposant que ceci est fait, il faudrait un autre socket qui repprenne les paquets analysés et qui le renvoie ...Il faut qu'ils tournent en // ? il faut de thread ??

    merci si tu peux m'eclairer un peu

  5. #5
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut
    bon pou la 1ere question,je ne comprend pas ce que vous voulez parce que je sais que la socket me retourne une chaine de caractere.
    pour second question,il faut lancer un thread pour chaque client, et un thread por le serveur
    Bon chance

  6. #6
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568

  7. #7
    MDP
    MDP est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    meci ! je suis était juste en train de le lire....

    Pour la suite tu as des endroits où je pourrait regarder ? pour les sockets en thread et la lecture/filtrage des paquets ?

    merci bcp!

Discussions similaires

  1. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum Développement
    Réponses: 5
    Dernier message: 30/05/2006, 13h02
  2. raw socket et langage c
    Par SlayDave dans le forum Développement
    Réponses: 2
    Dernier message: 29/08/2002, 19h09
  3. socket
    Par ben91 dans le forum Développement
    Réponses: 5
    Dernier message: 13/08/2002, 11h04
  4. Socket:Envoyer du texte d'un serveur vers tout les clients
    Par cedm78 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 01/08/2002, 16h40
  5. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/07/2002, 00h40

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