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

Windows Forms Discussion :

[C#] Sockets, récupération de l'adresse IP locale


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de dockurt2k
    Inscrit en
    Juillet 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 91
    Points : 98
    Points
    98
    Par défaut [C#] Sockets, récupération de l'adresse IP locale
    Bonjour tout le monde, je débute le dévellopement réseau, excusez moi d'avance de mon éventuel naîveté.

    J'utilise (notamment) le protocole UDP pour recevoir des paquets sur une machine, pour cela j'utilise les Socket du namespace System.Net.Sockets. Je doit lier ce paquet à un adaptateur réseau (une adresse IP locale) et un port de la machine.
    N'ayans aucune préférence sur l'adaptateur à utiliser, je laisse le framework se débrouiller et je lie donc le socket au point d'entree suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bindEndPoint = new IPEndPoint(IPAddress.Any, xxxx);
    receiveSocketUdp.Bind(bindEndPoint);
    Le probléme est que lors de la réception d'un paquet il me faut savoir sur quel interface je l'ais reçue (sur quel adresse IP, le port m'est connue vus les lignes ci dessus).
    Je pensait utiliser la méthode , cependant quoi que je fasse cette méthode me dit que l'interface utilisé est 0.0.0.0 : xxxx. C'est à dire IPAdresss.Any.

    Aprés consultation de la MSDN j'ai trouvé cette ligne qui m'encourage à penser que j'utilise la bonne méthode :
    The LocalEndPoint property is usually set after you make a call to the Bind method. If you allow the system to assign your socket's local IP address and port number, the LocalEndPoint property will be set after the first I/O operation
    Donc avez vous la moindre idée de la raison pour laquelle je ne peut obtenir l'interface sur laquelle à était reçue ce paquet avec la propriété LocalendPoint aprés la premiére entrée?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Salut,

    D'après ce que j'ai compris moi, l'objet IPEndPoint n'est utilisé dans ton cas que pour dire que tu peux recevoir des paquets que des adresses que tu as données (IPAddress.Any dans ton cas). Donc ça ne te permet pas récupérer l'adresse de celui qui t'envois un paquet, mais définit qui peut te répondre.

    Je dis peut-être une connerie (dans ce cas, faut le dire ).

    Voilà un lien sur le site MSDN de crosoft pour une classe UDPClient qui je pense, te permettras de faire ce que tu veux. Ca m'a l'air bien expliqué, mais tu l'a déjà peut-être lue.

    http://msdn2.microsoft.com/fr-fr/lib...udpclient.aspx

    En tous cas, même si ça ne te donnes pas toute la solution, je pense que tu peux t'orienter de ce côté.
    Le principe de UPD par rapport à TCP (tu dois le savoir je pense) c'est que tu n'es pas en mode connecté, et donc le bind n'est à priori pas indispensable (c'est ce que confirme le lien d'ailleurs...)

    Voilà, j'espère t'avoir été utile.

  3. #3
    Membre régulier Avatar de dockurt2k
    Inscrit en
    Juillet 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 91
    Points : 98
    Points
    98
    Par défaut
    Le IPEndPoint represente une des extremitées du socket il me semble(locale pour le LocalEndPoint, distante pour le RemoteEndPoint).

    La classe UDPClient me parait effectivement pas mal, je pense donc l'essayer. Cependant elle ne résoud pas mon probléme. obtenir l'adresse IP locale utilisé par mon socket (je peut récupérer la liste des IPs locales avec le DNSHost mais ça ne me suffit pas).

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/06/2009, 16h11
  2. Réponses: 6
    Dernier message: 28/02/2006, 17h41
  3. Réponses: 9
    Dernier message: 14/01/2006, 10h36
  4. [Socket] Récupération de structure C
    Par Hikage dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 06/10/2005, 00h12
  5. Récupération de l'adresse ip d'une interface précise
    Par PierreBo dans le forum Développement
    Réponses: 1
    Dernier message: 20/09/2005, 15h16

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