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 :

[Réseau] Winsock 2 ; configuration d'un port source


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut [Réseau] Winsock 2 ; configuration d'un port source
    Bonjour a tous,
    le probleme est le suivant: j'envoie des paquets par UDP a une machine sur un port de destination donne a partir d'un port aleatoirement attribue.
    Je cherche simplement la fonction me permettant de fixer le port source (j'ai effectue pas mal de recherches mais tres peu de resultats sont apparus, la seule "solution" que j'ai trouve (sur ce site mais en section c#) c'est de faire un bind de la socket sur le port, mais cela ne fonctionne pas).
    Je bosse avec Winsock 2

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il me semble que faire un bind de la socket sur le port est LA solution pour ça...
    En quoi cela ne marche-t-il pas exactement ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut
    Merci pour la reponse. En fait cela ne fonctionne pas dans la mesure ou le port source est toujours aleatoire =/
    La situation n'a pas evolue avec cette fonction en fait.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut
    voici le code :

    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
     
    void DLL_EXPORT sendMulticast(unsigned char *send_str, int send_len, int type, int port, char *group)
    {
        int             sock;                   /* socket descriptor */
        struct          sockaddr_in mc_addr;    /* socket address structure */
        char            *mc_addr_str;           /* multicast IP address */
        unsigned short  mc_port;                /* multicast port */
        unsigned char   mc_ttl=1;               /* time to live (hop count) */
     
        mc_addr_str = group;        /* arg 1: multicast IP address */
        mc_port     = port;         /* arg 2: multicast port number */
     
        /* create a socket for sending to the multicast address */
        sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
     
        /* set the TTL (time to live/hop count) for the send */
        setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL, (char*) &mc_ttl, sizeof(mc_ttl));
     
        /* construct a multicast address structure */
        memset(&mc_addr, 0, sizeof(mc_addr));
        mc_addr.sin_family      = AF_INET;
        mc_addr.sin_addr.s_addr = inet_addr(mc_addr_str);
        mc_addr.sin_port        = htons(mc_port);
        bind(sock, (SOCKADDR*) &mc_addr, sizeof(mc_addr));
     
        sendto(sock, (char *)send_str, send_len, 0, (struct sockaddr *) &mc_addr, sizeof(mc_addr));
     
        closesocket(sock);
    }
    WSAStartup a ete utilise avant l'appel de cette fonction, la dll est donc bien chargee.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/08/2007, 09h47
  2. [réseau] capter une requête sur un port spécifique
    Par ebaynaud dans le forum Langage
    Réponses: 1
    Dernier message: 29/09/2006, 13h26
  3. [Réseau local] Impossible d'ouvrir un port!
    Par webrider dans le forum Hardware
    Réponses: 3
    Dernier message: 10/08/2006, 08h51
  4. Configurer APACHE malgré PORT 80 fermé ?
    Par Sparkle dans le forum Apache
    Réponses: 2
    Dernier message: 20/07/2006, 13h15
  5. configuration d'un port PCI
    Par ptifleure dans le forum MFC
    Réponses: 2
    Dernier message: 11/04/2006, 10h08

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