Oppure

Loading
30/01/13 17:31
Phi
Salve a tutti,

Spero di aver postato nella sezione corretta.
Mi servirebbe un sistema, che funzioni, possibilmente, su qualsiasi sistema, per ottenere un elenco degli indirizzi dei dispositivi connessi alla Rete locale su cui è connesso il mio.
Sono già a conoscenza sia dell'esistenza di alcune Api Windows (che usa, per esempio Piero Tofy per il suo Poker multiplayer), sia di alcuni comandi per il terminale linux. Ma volevo sapere se conoscete un trucco, un algoritmo, una libreria o qualcos'altro che funzioni sempre..
Se vi servisse sapere come mai mi interessa questo allora sappiate che sto scrivendo un gioco e voglio che il client verifichi la presenza di server attivi sulla rete locale.
L'ideale sarebbe avere qualcosa implementabile in C++, ma ho la mente aperta.

Spero di esser stato chiaro. Grazie in anticipo.
Phi
Ultima modifica effettuata da Phi 30/01/13 17:35
aaa
30/01/13 17:44
tasx
Ciao...

guard qui -> it.wikipedia.org/wiki/… e poi fai un ping per ogni ip disponibile e guardi chi ti risponde

e se poi vuoi sapere anche il mac o analizzi l'intestazione del pacchetto o guardi l'arp table:

it.wikipedia.org/wiki/…

se c'è qualcosa di già pronto non so....

ciaociao ;)
aaa
30/01/13 17:58
Phi
Il problema è che non posso fare il ping di ogni ip che inizi con 192.168 , sarebbero 65536 indirizzi da provare. No ?
aaa
30/01/13 19:10
tasx
ehm, non vorrei dire assurdità ma penso che tu possa iterare solo sull'ultimo byte....

quindi 255 ping....

puoi usare anche la libreria pcap per inviare e ricevere pacchetti....
aaa
30/01/13 19:19
Dovresti fare in modo che il tuo server risponda con il protocollo UDP su una determinata porta.
In questo modo i tuoi client potrebbero inviare un pacchetto UDP ad un indirizzo broadcast (255.255.255.255) su quella porta in modo che il server risponda con il proprio IP (un po' come funziona SQL Server).

Le limitazioni a questo modo di operare possono stare nella tua rete. Se hai dei dispositivi che bloccano le comunicazioni UDP o quelle broadcast o le porte sono bloccate.

Quindi parliamo solo di rete locale (anche a giudicare dagli indirizzi di cui parli) e non di internet.

Comunque, non è banale.
Ultima modifica effettuata da 30/01/13 19:28
30/01/13 21:07
Phi
Postato originariamente da tasx:

ehm, non vorrei dire assurdità ma penso che tu possa iterare solo sull'ultimo byte....


Solitamente sì(anche a casa mia è così;), però non sempre: per esempio nella rete della mia scuola per connettersi a computer di diversi laboratori bisogna cambiare anche il terzo byte.

@Nessuno:
Interessante, sapresti dirmi dove posso trovare spiegato come funziona un indirizzo broadcast ? Perché non so cosa sia.
Ultima modifica effettuata da Phi 30/01/13 21:10
aaa
30/01/13 21:50
Postato originariamente da Phi:
Interessante, sapresti dirmi dove posso trovare spiegato come funziona un indirizzo broadcast ? Perché non so cosa sia.


Beh, allora siamo messi male perché è un argomento che si inserisce nell'ambito (molto vasto) dell programmazione di rete, per cui ci sono libri di molte centinaia di pagine da leggere e studiare (vedi Tanenbaum).

Comunque, ti indico questo link

softwareandfinance.com/Visual_CPP/…

con un esempio cli-srv di UDP broadcast
31/01/13 0:05
pierotofy
Un esempio lo trovi anche qui (che segue il metodo spiegato da nessuno):

phimuskapsi-android-hedgewars.googlecode.com/hg//QTfrontend/…

Hedgewars e' un gioco open-source. Potresti scaricare il sorgente e dargli un'occhiata.
Il mio blog: piero.dev