PDA

View Full Version : Verificare esistenza di PC in rete...


TonyManero
04-07-2007, 16:32
Salve a tutti...

Attualmente un mio programma controlla se esiste un PC in rete in questo modo

if (DirectoryExist(\\nomecomputer\SharedDocs)) ....

Mi fa un po' paura però basarmi sulla presenza di una cartella condivisa che non creo io...

C'è un altro modo altrettanto veloce, semplice ed efficente? Intendo senza agire sul server... tipo crearci dei file.. o altre cose.

Si può fare un ping da C???

TonyManero
13-07-2007, 15:15
Salve a tutti...

Attualmente un mio programma controlla se esiste un PC in rete in questo modo

if (DirectoryExist(\\nomecomputer\SharedDocs)) ....

Mi fa un po' paura però basarmi sulla presenza di una cartella condivisa che non creo io...

C'è un altro modo altrettanto veloce, semplice ed efficente? Intendo senza agire sul server... tipo crearci dei file.. o altre cose.

Si può fare un ping da C???

Provo un up... :D

cionci
14-07-2007, 00:42
Certo che puoi fare un ping:

system("ping nomehost > out.txt");

Dopo devi ovviamente aprire out.txt ed interpretare il risultato.
Sinceramente non mi sono mai posto il problema di fare un ping tramite codice, anche perchè effettivamente ICMP (il protocollo del ping) non si basa su TCP o UDP, ma solo su IP, quindi mi viene il dubbio che si debba usare i RAW socket.

cionci
14-07-2007, 00:45
Ho visto che MS ha anche le API per fare l'ICMP Echo (il ping appunto): http://msdn2.microsoft.com/en-us/library/aa366045.aspx

andbin
14-07-2007, 11:07
Ho visto che MS ha anche le API per fare l'ICMP Echo (il ping appunto): http://msdn2.microsoft.com/en-us/library/aa366045.aspxSì, è vero. Ma non basta usare semplicemente la sola IcmpCreateFile, c'è un po' di altre cose da fare ....
Appena ho tempo posto un sorgente di esempio, perché ho già avuto modo di usare queste API.

cionci
14-07-2007, 11:13
C'è già il sorgente con la IcmpSendEcho ;)
http://msdn2.microsoft.com/en-us/library/aa366050.aspx