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

MFC Discussion :

[MFC] Connections réseau


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut [MFC] Connections réseau
    Bonjour,
    je poste ici vu que j'utilise VC++.. avec MFC sous WinXP et connecté à un Server2003, à fond M$! Mais mes questions concernent plutôt le réseau, désolé si je me trompe..
    Je cherche à faire un prog tout bête éxécuté sur le serveur avec lequel je pourrais envoyer des alertes aux postes clients du réseau local sous forme de MessageBox, et nécessitant des "confirmations de lectures" ou des réponses "OUI/NON". Mes questions sont:

    1 Comment récupérer le nom du serveur (nom machine ou adresse IP) à partir d'un poste client d'un réseau local?
    1bis Accessoirement est-il possible, à partir du serveur, de faire une liste des machines connectées?

    2 Ou pourrais-je trouver des exemples de code MFC utilisant les CSocket/CSocketFile/CArchive pour gérer plusieurs connections en même temps au niveau du prog serveur?

    Merci pour vos lumières!!

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    Tu connais "net send * toto" ?

    Bon plus serieusement, il serait possible de lancer un prog sur le serveur qui accepete les connexions et les garde ouvertes. Sur les postes des clients tu lances un prog en systray qui des le lancement se connecte au serveur (tu ecris le ip/port dans la base de registres par exemple) et garde la connexion, avec une programmation evenementielle coté client tu devrais t'en sortir.

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Salut,
    Pour la question 1a :

    Je ne sais pas si il y a une api qui donne ça .

    Mais éventuellement en récupérant l'adresse de la passerelle ou le Dns de ta carte réseau ,tu obtiens celle de ton serveur ...

    Voir cet exemple sur codeproject qui exploite l'api EnumNetworkAdapters
    Pour simuler l'utilitaire ipoconfig
    http://www.codeproject.com/internet/netcfg.asp

    autre possibilité avec les fonctions Wnet :
    WNetOpenEnum /WNetEnumResource permet de parcourir les ressources d'un réseau ,et dans la structure NETRESOURCE tu trouves le flag RESOURCEDISPLAYTYPE_SERVER quand l'objet itéré est un serveur .

    tu trouveras aussi le nom netbios ,donc a priori si tu n'as qu'un serveur sur le réseau ça devrait être jouable sans trop de problemes.

    voir MSDN il y a un exemple d'utilisation de ce couple de fonction.
    ça répond aussi au 1bis .

    2) j'ai déjà donné des liens sur MSDN sur le forum sur le sujet
    Utilise la recherche avancée du forum .
    Sinon sur MSDN en cherchant CSocket ou CSocketFile tu trouves des exemples complet client/srv et un descriptif technique de la marche à suivre.

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Salut,

    As-tu inspecter la classe CHttpRequest
    Voici quelques fonctions membres:
    GetUrl Call this method to retrieve the value of the "URL" server variable.
    GetUrlReferer Call this method to retrieve the value of the "HTTP_REFERER" server variable.
    GetUserAgent Call this method to retrieve a string containing the value of the "HTTP_USER_AGENT" server variable.
    GetUserHostAddress Call this method to retrieve the value of the "REMOTE_ADDR" server variable.
    GetUserHostName Call this method to retrieve the value of the "REMOTE_HOST" server variable.
    GetUserLanguages Call this method to retrieve the value of the "HTTP_ACCEPT_LANGUAGE" server variable.
    GetUserName Call this method to retrieve the value of the "REMOTE_USER" server variable.
    Gabrielly

  5. #5
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    j'ai aussi trouvé cette fonction

    CInternetConnection::GetServerName Gets the name of the server associated with the connection.

    Gabrielly

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par Gabrielly
    j'ai aussi trouvé cette fonction

    CInternetConnection::GetServerName Gets the name of the server associated with the connection.

    Gabrielly
    ce n'est valide que pour une connexion internet , -> donc sur le serveur par internet -> IIS installé et qui repond ,et ça veut dire aussi qu'il connait le nom du serveur ... non ?

  7. #7
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Ok pour la remarque.

    J'ai un autre lien sur les sockets avec la bibliothèques libsock++

    http://www.mines.inpl-nancy.fr/~lamiroy/ENSEIGNEMENT/SYS/TD-SOCKET/socklib.pdf

    ça peut aider...

    Gabrielly

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    je veux pas etre rabat joie lol ,mais bof
    regarde mon post sur les api32 mentionnées ...
    Notamment sur le parcours des ressources réseaux par les fonction Wnet .


  9. #9
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    EuZah a écrit:

    1bis Accessoirement est-il possible, à partir du serveur, de faire une liste des machines connectées?
    On peut obtenir des informations à partir des navigateurs des clients à l'aide de l'interface COM IBrowserCaps et ensuite mettre ses informations dans un objet collection.

    comme l'indique ses fonctions membres.

    GetVersion Call this method to get the browser version.
    GetPlatform Call this method to get the platform that the browser runs on.
    GetBrowserName Call this method to get the name of the browser.
    GetMajorVer Call this method to get the major version of the browser.
    GetMinorVer Call this method to get the minor version of the browser.
    et d'autres...
    Voici un exemple de code d'ATL Server qui récupère le Browser d'un 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    CComPtr<IBrowserCaps> m_spBrowserCaps;
     
    [ tag_name(name = "LoadBrowserCaps") ]
    HTTP_CODE OnLoadBrowserCaps()
    {
        // Get the IBrowserCapsSvc service from the ISAPI extension.
        CComPtr<IBrowserCapsSvc> spBrowserCapsSvc;
        if (FAILED(m_spServiceProvider->QueryService(
                        __uuidof(IBrowserCapsSvc), &spBrowserCapsSvc)))
        {
            return HTTP_FAIL;
        }
     
        // Get user agent string from the query parameters.
        LPCSTR szUserAgent = m_HttpRequest.QueryParams.Lookup("UserAgent");
        if (szUserAgent != NULL)
        {
            // Get the browser capabilities for the specified user agent.
            if (FAILED(spBrowserCapsSvc->GetCapsUserAgent(
                                 CComBSTR(szUserAgent), &m_spBrowserCaps)))
            {
                return HTTP_FAIL;
            }
        }
        else
        {
            // Get the browser capabilities for the user's current user agent.
            if (FAILED(spBrowserCapsSvc->GetCaps(m_spServerContext,
                                                           &m_spBrowserCaps)))
            {
                return HTTP_FAIL;
            }
        }
     
        return HTTP_SUCCESS;
    }
    OnLoadBrowserCaps() est une méthode de remplacement de nom LoadBrowserCaps qui substitue une balise spéciale d'un fichier *.srf managé par un gestionnnaire de requête particulier.


  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Gabrielly quand je disais "client", j'entendais "station de travail connectée au serveur" en fait, non pas "browser" ou un quelconque programme utilisant http ou un autre protocole.. Merci pour ton temps!

    Merci aussi Farscape, je n'étais pas encore tombé sur ces fonctions auparavant..
    J'imagine qu'il faut allouer de l'espace pour les LPTSTR de la structure NETRESOURCE, n'est-ce pas?

    Mais tout ceci m'a l'air vraiment trop compliqué pour moi (ou alors trop long à assimiler), cela va se terminer par un champ à compléter avec le nom du serveur et ça ira bien comme ça..J'ai l'impression d'avoir à couper une forêt d'arbres en fer avec une lame en bois.. Je voulais faire qqchose d'indépendant par rapport à de futures modifications (genre le nom du serveur) mais il y a plus d'agios que d'intérêts (disons que ça m'évitait de faire 3 km à pied pour prévenir tout le monde), je vais faire dans l'"opérationnel rapidement".. En attendant d'avoir le temps de m'y remettre plus sérieusement.. (c'est pas mon vrai boulot!!)

    Et excusez moi pour l'ignorance des termes, je ne suis qu'un pauvre autodidacte, mais déjà bien (trop?) ambitieux je m'en rends compte..! (tout ça pour un prog "tout bête"!)
    Re-merci encore, et à bientôt!

Discussions similaires

  1. Problème de connection réseau fedora
    Par gdpasmini dans le forum Réseau
    Réponses: 5
    Dernier message: 08/01/2007, 09h17
  2. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  3. double connection réseau
    Par dirty_boy dans le forum Administration
    Réponses: 4
    Dernier message: 21/03/2006, 15h27
  4. [MFC] Utilitaire réseau
    Par taron dans le forum MFC
    Réponses: 2
    Dernier message: 19/09/2005, 18h25
  5. connection réseau P2P
    Par hogan dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 18/07/2005, 02h37

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