begin process at 2012 05 30 00:52:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

ordi sur un réseau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ordi sur un réseau

lundi 14 novembre 2005 à 13:22:26 | ordi sur un réseau

vangeurmasker

Membre Club
Je cherche a savoir comment récupérer le nom et l'adresse ip de tous les ordinateurs situés sur le même réseau local que le mien.

Merci de votre aide


lundi 14 novembre 2005 à 18:58:31 | Re : ordi sur un réseau

yoyo269

Membre Club
J'ai déjà fait ça sur un de mes progs.
Regarde dans mes sources, c'est le "Petit chat assez complet...".
Après regarde dans le fichier "VoirRéseau.h", si je me trompe pas.
Mais avant essaie le prog pour voir si c'est bien ce que tu veux.

YOYO, @+.
YOYO
lundi 14 novembre 2005 à 22:32:24 | Re : ordi sur un réseau

BruNews

Administrateur CodeS-SourceS


HWND htxt; // EDIT SUR LEQUEL JE METS RESULTAT
HANDLE hthrd = 0;
DWORD thrdID;
char szERROR[] = "ERREUR";

void __stdcall SearchIP(char *Tmp)
{
  HOSTENT* ip_resolue;
  SOCKADDR_IN valip;
  int c;
  char IPAdress[20];
  ip_resolue = gethostbyname(Tmp);
  if(ip_resolue) {
    // RECUPERATION DU DERNIER ENTIER 'c' TEL QUE ip_resolue->h_addr_list[c] != NULL
    for(c = 0; ip_resolue->h_addr_list[c+1]; c++) {}
    memcpy(&valip.sin_addr.s_addr, ip_resolue->h_addr_list[c], ip_resolue->h_length);
    IPAdress[0] = '\t';
    strcpy(IPAdress + 1, inet_ntoa(valip.sin_addr));
    SendMessage(htxt, EM_REPLACESEL, 0, (long) IPAdress);
  }
}

void PcEnumReso(NETRESOURCE *nr)
{
  HANDLE hEnum;
  DWORD Result;
  DWORD count = -1;
  DWORD BufferSize = 0;
  DWORD ReturnVal = 0;
  NETRESOURCE *NetRes;
  Result = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER, nr, &hEnum);
  if(Result) return;
  NetRes = (LPNETRESOURCE) VirtualAlloc(0, 1024, MEMDISPO, PAGE_READWRITE);
  while(1) {
    ReturnVal = WNetEnumResource(hEnum, &count, NetRes, &BufferSize);
    if(ReturnVal == ERROR_MORE_DATA) { // On recalcul la taille du Buffer
      count = -1;
      VirtualFree(NetRes, 0, MEM_RELEASE);
      NetRes = (LPNETRESOURCE) VirtualAlloc(0, BufferSize, MEMDISPO, PAGE_READWRITE);
      ReturnVal = WNetEnumResource(hEnum, &count, NetRes, &BufferSize);
    }
    if(ReturnVal) break;
    while(count--) {
      if(*((WORD*)NetRes[count].lpRemoteName) == 0x5C5C) { // 2 premiers char == '\\'
        SendMessage(htxt, EM_REPLACESEL, 0, (long) (NetRes[count].lpRemoteName + 2));
        SearchIP(NetRes[count].lpRemoteName + 2);
        SendMessage(htxt, EM_REPLACESEL, 0, (long) "\r\n");
      }
      // RECURRENCE POUR TROUVER L'ENSEMBLE DES PCs
      if(NetRes[count].dwUsage & RESOURCEUSAGE_CONTAINER) PcEnumReso(&NetRes[count]);
    }
    if(ReturnVal == ERROR_NO_MORE_ITEMS) {
      VirtualFree(NetRes, 0, MEM_RELEASE);
      WNetCloseEnum(hEnum);
    }
  }
  VirtualFree(NetRes, 0, MEM_RELEASE);
  WNetCloseEnum(hEnum);
}

Appeler ainsi:
PcEnumReso(0);

ciao...
[ Lien ]
BruNews, MVP VC++

samedi 19 novembre 2005 à 13:28:18 | Re : ordi sur un réseau

vangeurmasker

Membre Club
merci brunew pour ta source mais je ne sait pas quoi passer comme parametre a la fonction (NETRESOURCE *nr);
J'utilise
samedi 19 novembre 2005 à 13:38:29 | Re : ordi sur un réseau

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

En 1 peu plus court:

void __stdcall SearchIP(char *szname)
{
  HOSTENT* host;
  SOCKADDR_IN valip;
  int n;
  char szip[20], *c;
  if(host = gethostbyname(szname)) {
    // RECUPERATION DU DERNIER ENTIER n TEL QUE host->h_addr_list[n] != NULL
    for(n = 0; host->h_addr_list[n+1]; n++) {}
    memcpy(&valip.sin_addr.s_addr, host->h_addr_list[n], host->h_length);
    if(c = inet_ntoa(valip.sin_addr)) {
      strcpy(szip + 1, c);
      szip[0] = '\t';
      SendMessage(htxt, EM_REPLACESEL, 0, (long) szip);
    }
  }
}

void __stdcall PcEnumReso(NETRESOURCE *nr)
{
  HANDLE hEnum;
  DWORD count = -1;
  DWORD bufsize = 16384;
  NETRESOURCE *NetRes;
  if(WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER, nr, &hEnum)) return;
  NetRes = (LPNETRESOURCE) VirtualAlloc(0, bufsize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
  if(!NetRes) goto closeENUM;
 
  while(!WNetEnumResource(hEnum, &count, NetRes, &bufsize)) {
    while(count--) {
      if(*((WORD*)NetRes[count].lpRemoteName) == 0x5C5C) { // 2 premiers char == '\\'
        SendMessage(htxt, EM_REPLACESEL, 0, (long) (NetRes[count].lpRemoteName + 2));
        SearchIP(NetRes[count].lpRemoteName + 2);
        SendMessage(htxt, EM_REPLACESEL, 0, (long) "\r\n");
      }  // DESSOUS RECURRENCE POUR TROUVER L'ENSEMBLE DES PCs
      if(NetRes[count].dwUsage & RESOURCEUSAGE_CONTAINER) PcEnumReso(&NetRes[count]);
    }
  }
  VirtualFree(NetRes, 0, MEM_RELEASE);
closeENUM: WNetCloseEnum(hEnum);
}

APPEL:
SetWindowText(htxt, 0);
PcEnumReso(0);

ciao...
[ Lien ]
BruNews, MVP VC++



Cette discussion est classée dans : réseau, ordi


Répondre à ce message

Sujets en rapport avec ce message

jeu en réseau trop lent [ par CanardMoussant ] Bonjour, je réalise actuellement un jeu de voiture en réseau a plusieurs, et je suis chargé de la programmation réseau. J'ai déjà bien avancé et grace communiquer avec un ordi du réseau wifi en C++ [ par medez2 ] Bonjour, je dois faire un programme en C++ me permettant d'envoyer des lignes de commandes à un module connecté par wifi sur le réseau local, typiquem [BAR]réseau métropolitains [ par sokotanic ] BONJOUR dans mon examen mon professeur à donné une question sur la culture en informatique(puisque c'est un module de réseau). bon la question c'est programmation du réseau de distribution électrique en c++ [ par ryma24 ] bonjour je voulais savoir si quelqu'un de votre part a un exemple de programmation du réseau de distribution électrique avec le C++ car j'ai u des pro détection de main par réseau de neurone matlab [ par toufti ] salut, une débutante sur Matlab en utilisant le Toolbox neural network recognition tool pour détecter un main jusqu'à maintenant j'ai fait 100 images pas de connexion avec ma carte réseau utilisant winpcap [ par sloumanaw ] Bonjour, je développe une application avec Visual C + + 2010 sous Windows 7, je veux envoyer et recevoir les mêmes paquets en utilisant les bibliothè Gestion de l'exécustion parrallèle de fonctions [ par hazelia ] Bonjour, Je me permet de poster pour la première fois dans ce site, car je suis débutante en c++ et suis bloquée sur un programme à réaliser. En fa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales