salut ,
et bien tout est dans le titre. Existe t'il une fonction ( c ou c++ ou sdk peut importe ) pour savoir si un ordinateur est connecté au reseau (pas l'ordi sur lequel le prog se trouve)??
merci d'avance.
salut ,
et bien tout est dans le titre. Existe t'il une fonction ( c ou c++ ou sdk peut importe ) pour savoir si un ordinateur est connecté au reseau (pas l'ordi sur lequel le prog se trouve)??
merci d'avance.
que la force soit avec toi
quel OS ?,
solution bete, pinger l'ordinateur
tout d'abord merci de vos réponses .
pour les os, il faudrai que cela fonctionne sur win9x, 2000, xp.
le gethostbyname parai pas mal mais le problème et que si on interroge le serveur une fois et que l'ordi est conecté OK. on etain l'ordi, on redemande les infos et la vu qu'elles sont tjs en mémoires, il dis que l'ordi est tjs connecté.
que la force soit avec toi
Et si on essaye d'ouvrir une connection IP avec une socket ?
Tu peux aussi ping"er" la machine que tu cherches.
Voici un lien avec le code source :
http://tangentsoft.net/wskfaq/examples/dllping.html
Birds of a feather flock together
pour le socket le problème c'est qu'il "mouline" si le poste n'est pas connecté. c n'est pas un beau plantage d'ou on pourrai récupérer l'erreur donc derrière l'interpréter.
pour ton lien freedy, cela covient mais que pour 2000 et XP car il utilise la fonction IcmpSendEcho qui n'est que compatible avec ces 2 OS et moi il faudrai que cela fontionne aussi pour win9x
que la force soit avec toi
Personnelement, je n'ai pas d'idée précise, et en portable, ça me parraît dur, surtout pour Win95. Je pense que c'est faisable avec WMI (je sais qu'on peut être averti lorsque le cable est débraché). Sinon peut être indirectement avec les fonctions d'exploration du réseau (WNetOpenEnum...), ou en jouant avec des trucs un peu plus système genre la table ARP...
Tu peux tenter d'utiliser WMI avec Win32_NetworkAdapter.NetConnectionStatus.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_networkadapter.asp
Sinon en Win32, mais sous NT seulement, tu peux adapter cet exemple :
http://www.pcausa.com/Utilities/macaddr2.htm
re,
j'ai pas encore réussi a adapter un truc qui soit multi-os car c surtout sur les win9x que c'est la galère.mais en tout cas merci de votre aide
que la force soit avec toi
salut...
on peut pas exploiter les vieux commandes DOS pour windows? (net)
Vive Delphi !!
T'as fait comment pour Win2k/XP ?Envoyé par LitteulKevin
Bonjour,
Personellement, j'utilise beaucoup les APIs internet (Wininet) plutôt que directement utiliser les sockets (en fait il semble que wininetsoit une couche supérieure aux sockets).
Peut être que 'InternetCheckConnection' est une solution envisageable. Return True si l'ordinateur distant est connecté, FALSE le cas contraire.
Fonctionne de win95 à Server 2003...
Lien MSDN Fonction InternetCheckConnection
Lien MSDN fonction Wininet
En espérant que ca puisse aider.
Neitsa.
Il s'agit ici d'un réseau local, pas d'une connexion internet.
Mais en relisant la question je vois que je me suis trompé :
La solution est très simple, freddy766 avait vu juste, il suffit de le pinger.savoir si un ordinateur est connecté au reseau (pas l'ordi sur lequel le prog se trouve)??
Je pensais que tu voulais savoir si le cable réseau était branché...
Effectivement HW, la solution de freedy766 semble la meilleur mais en fait il y a un truc bizarre :
selon l'msdn, une des fonction utilisé pour faire le ping (IcmpSendEcho) n'est compatible que win 2000 et xp
http://msdn.microsoft.com/library/de...mpsendecho.asp
mais selon d'autre source que j'ai trouvé sur le net, elle est compatible avec au moins win9x et 2000:
http://centrewd.free.fr/?page=fichea...n=IcmpSendEcho
a tester quoi.....
que la force soit avec toi
C'est lié à la dll. Ca a été documenté à partir de Win2K il me semble, en tous cas y'a les sources dans le SDK pour utiliser la dll depuis ce temps là seulement. Avant on chargeais à la main la dll...
Le mieux est de faire ton programme, et de tester...
re,
voici une fonction permettant de savoir si un pc distant est allumé ou connecté au réseau avec pour paramètre passé à celle-ci :
- - char *szAddr qui spécifie l'adresse de l'ordinateur distant
- - int nTimeOut qui lui spécifie le TimeOut en millisecondes
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
51
52
53
54
55
56
57
58
59
60 bool IsConnected( const char *szAddr, const int nTimeOut) { bool bRetour = false; PIP_ECHO_REPLY pIpe = NULL; HINSTANCE hIcmp = NULL; HANDLE hIP = NULL; WSAData wsaData; if ( WSAStartup( MAKEWORD( 2, 0), &wsaData) == 0) { hIcmp = LoadLibrary( "ICMP.DLL"); if( hIcmp) { struct hostent* phe = gethostbyname( szAddr); if( phe) { typedef HANDLE (WINAPI* pfnHV)(void); typedef BOOL (WINAPI* pfnBH)(HANDLE); typedef DWORD (WINAPI* pfnDHDPWPipPDD)(HANDLE, DWORD, LPVOID, WORD, PIP_OPTION_INFORMATION, LPVOID, DWORD, DWORD); pfnHV pIcmpCreateFile = (pfnHV)GetProcAddress(hIcmp, "IcmpCreateFile"); pfnBH pIcmpCloseHandle = (pfnBH)GetProcAddress(hIcmp, "IcmpCloseHandle"); pfnDHDPWPipPDD pIcmpSendEcho = (pfnDHDPWPipPDD)GetProcAddress( hIcmp, "IcmpSendEcho"); if( ( pIcmpCreateFile) && ( pIcmpCloseHandle) && ( pIcmpSendEcho)) { hIP = pIcmpCreateFile( ); if( hIP != INVALID_HANDLE_VALUE) { char acPingBuffer[64]; memset(acPingBuffer, '\xAA', sizeof(acPingBuffer)); pIpe = ( PIP_ECHO_REPLY)GlobalAlloc( GMEM_FIXED | GMEM_ZEROINIT, sizeof( IP_ECHO_REPLY) + sizeof( acPingBuffer)); if( pIpe) { pIpe->Data = acPingBuffer; pIpe->DataSize = sizeof( acPingBuffer); DWORD dwStatus = pIcmpSendEcho( hIP, *((DWORD*)phe->h_addr_list[0]), acPingBuffer, sizeof( acPingBuffer), NULL, pIpe, sizeof( IP_ECHO_REPLY) + sizeof( acPingBuffer), nTimeOut); if( dwStatus) { bRetour = true; } } pIcmpCloseHandle( hIP); } } } } } if( pIpe) GlobalFree( pIpe); if( hIcmp) FreeLibrary( hIcmp); WSACleanup( ); return( bRetour); }
que la force soit avec toi
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager