View Full Version : [JAVA] wi-fi
Oceans11
10-01-2007, 15:52
Dovrei fare un programma di messaggistica wi-fi (broadcast), quale framework java devo usare?
mi sapete indicare qualche link ai download?
ps: ho scaricato il wireless toolkit 2.2 solo che sembra ci siano solo classi per progr. di cellulari...oppure sto ancora dormendo?
grazie!
Dovrei fare un programma di messaggistica wi-fi (broadcast), quale framework java devo usare?
mi sapete indicare qualche link ai download?
ps: ho scaricato il wireless toolkit 2.2 solo che sembra ci siano solo classi per progr. di cellulari...oppure sto ancora dormendo?Se non devi lavorare con J2ME (per dispositivi mobili, cellulari, ecc...), il wireless toolkit non ti serve.
Comunque spiega meglio ... una rete wi-fi è semplicemente una rete LAN ... senza fili! Quindi tutto quello che puoi fare a livello di networking con Java (package java.net), lo puoi fare ovviamente anche su una rete wi-fi.
Oceans11
10-01-2007, 16:09
Ho capito bene???non ci credo! :D
ma....come faccio a scegliere l'interfaccia (eth0, lo etc..)?se sono connesso in una LAN ed in una WLAN come faccio capire al programma quale scheda di rete deve usare?
un'altra cosa non ho proprio capito...per inviare dati (stringhe) in broadcast, mi basta selezionare l'ip giusto (l'ip di broadcast della sottorete come si fa con gli hub) oppure devo gestirlo io via software?
PS: cosa farei senza di te!!!! :D
ma....come faccio a scegliere l'interfaccia (eth0, lo etc..)?se sono connesso in una LAN ed in una WLAN come faccio capire al programma quale scheda di rete deve usare?È il sistema che "sa" su quale interfaccia inviare i pacchetti.
un'altra cosa non ho proprio capito...per inviare dati (stringhe) in broadcast, mi basta selezionare l'ip giusto (l'ip di broadcast della sottorete come si fa con gli hub) oppure devo gestirlo io via software?Se devi fare una connessione in unicast, l'IP di destinazione lo devi avere per forza. Se devi fare un multicast, le cose sono diverse. Java ha una classe MulticastSocket, personalmente non l'ho mai usata, ma dovrebbe essere proprio quello che ti serve.
Oceans11
11-01-2007, 15:02
È il sistema che "sa" su quale interfaccia inviare i pacchetti.
ok capito.
Se devi fare un multicast, le cose sono diverse. Java ha una classe MulticastSocket, personalmente non l'ho mai usata, ma dovrebbe essere proprio quello che ti serve.
Ho dato un occhiata alla classe MulticastSocket però usa il protocollo UDP...va bene lo stesso??
Forse non ho capito bene...per mandare stringhe in broadcast, ho bisogno di un server che invia a tutto il gruppo oppure basta inviare la stringa ad un dato indirizzo che la doc java definisce WildCard??
Ho dato un occhiata alla classe MulticastSocket però usa il protocollo UDP...va bene lo stesso??Sì ... anche per un motivo molto semplice. UDP è molto adatto per il multicast. Il TCP invece non è particolarmente adatto, perché per definizione il TCP consiste nella instaurazione di una connessione punto-punto tra 2 host. Quindi la vedrei un pochino dura fare un multicast su TCP.
Non sono esperto di networking, quindi non saprei dirti se il multicast su TCP è tecnicamente fattibile e se è già stato implementato su qualche sistema.
Forse non ho capito bene...per mandare stringhe in broadcast, ho bisogno di un server che invia a tutto il gruppo oppure basta inviare la stringa ad un dato indirizzo che la doc java definisce WildCard??Allego un semplice e simpatico programmino client-server in multicast che ho sviluppato io proprio oggi. Il funzionamento è semplice: il server, ad ogni secondo, invia in multicast ai client un pacchetto che contiene una stringa con la data/ora corrente. I client stanno in attesa dei pacchetti e quando li ricevono, stampano la data/ora.
Nulla di eccezionale ma può essere utile a te o ad altri. ;)
Compila i due sorgenti, poi attiva il server ad esempio con:
java MulticastTimeServer 228.1.2.3 1234
e poi attiva quanti client vuoi con:
java MulticastTimeClient 228.1.2.3 1234
Non sono esperto di networking, quindi non saprei dirti se il multicast su TCP è tecnicamente fattibile e se è già stato implementato su qualche sistema.
Che io sappia lavorare sugli indirizzi indirizzi multicast è impossibile con TCP...
RTP dovrebbe essere interessante...
http://www.cs.columbia.edu/~hgs/teaching/ais/1998/projects/java_rtp/report.html
Comunque perchè parli di broadcast ? Se sicuro che ti serve il broadcast ?!?!?
Che io sappia lavorare sugli indirizzi indirizzi multicast è impossibile con TCP...Era quello che volevo sapere .... proprio quello che supponevo. :asd:
Grazie
Oceans11
12-01-2007, 11:52
Comunque perchè parli di broadcast ? Se sicuro che ti serve il broadcast ?!?!?
sì mi serve il broadcast...come da specifiche del progetto!
Compila i due sorgenti, poi attiva il server ad esempio con:
java MulticastTimeServer 228.1.2.3 1234
e poi attiva quanti client vuoi con:
java MulticastTimeClient 228.1.2.3 1234
fatto ma mi lancia una SocketException: invalid option!
sono quasi sicuro che sia perchè non ho una rete attiva, al momento almeno :rolleyes:... confermate?
^TiGeRShArK^
12-01-2007, 21:35
se non sbaglio in java 6 hai anke la possibilità di scegliere l'interfaccia di rete...
prova a darci un okkiatina ;)
Oceans11
13-01-2007, 10:42
non mi ero accorto che era una prerogativa della 6!! :D
no dando un'occhiata qua e là...non sapendo dove guardare...mi sono imbattuto in una pagina (versione draft :sofico: ) del tutorial in cui si parla di sta classe NetworkInterface (se non sbaglio).
Ieri ho avuto modo di testare la connessione e funziona, l'interfaccia giusta viene scelta in auto (come ha detto andbin). Ed era come pensavo, il socket mi dà eccezione se non ho connessioni di rete attive! :rolleyes:
grazie a tutti...se mi serve qualcos'altro vengo di corsa a chiedere!!
ciao!
non mi ero accorto che era una prerogativa della 6!! :D
no dando un'occhiata qua e là...non sapendo dove guardare...mi sono imbattuto in una pagina (versione draft :sofico: ) del tutorial in cui si parla di sta classe NetworkInterface (se non sbaglio).A dire il vero la classe NetworkInterface esiste a partire da Java 1.4 (a cui sono stati aggiunti metodi con Java 1.6). Una nuova classe disponibile con Java 1.6 è invece InterfaceAddress. Le due classi comunque servono solo per avere informazioni (più) dettagliate sul sistema di networking.
l'interfaccia giusta viene scelta in autoE questo vale in generale.
Se l'host A ha 2 interfacce di rete eth0/eth1 e vuole mandare un pacchetto all'host B (es. 192.168.2.1), deve conoscere il MAC address di B. Se non lo sa, usa il protocollo ARP. Manda un pacchetto ARP in broadcast su tutte le interfacce per chiedere "chi ha l'IP 192.168.2.1??". Chi si riconosce (l'host B) invia la risposta. Nel pacchetto però c'è sia il MAC di A che di B, quindi A riesce a conoscere sia il MAC di B, sia su quale interfaccia fisica è connesso B.
Per quanto riguarda il multicast è un po' diverso: la classe di indirizzi 'D' è dedicata al multicast. Un pacchetto multicast viene mandato in broadcast a tutti gli host collegati alla rete.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.