|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
[java] Network Monitor
ciao a tutti, devo realizzare un progetto di network monitor per monitorare le prestazioni di una rete... tra le funzioni richiesta vi è un test di velocita di trasmissione dati... l'architettura è formata da un server e da vari Client dislocati sulle varie macchine che compongono la rete... la mia domanda è come posso far comunicare due client senza passare per il server al quale sono connessi???
devo creare una nuova serversocket?? grazie in anticipo OS : win |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
il test del throughput visto dal livello applicazione lo puoi fare in java attraverso i socket. Se ti interessano invece statistiche dei livelli più bassi devi poggiarti alle API del SO.
Quanto al tipo di architettura, se client/server o p2p dipende dalle tue specifiche esigenze, ma questo poco interessa poi ai fini della scelta del livello trasporto e quindi dell' implementazione in JAVA. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
si anche io volevo farlo attraverso le socket, ma non riesco a mettere in contatto tra di loro due client? devo per caso creare una ServerSocket su uno dei client?
grazie per la risposta |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
si per instaurare una connessione TCP c'è bisogna che una delle 2 entità coinvolte faccia binding su una porta.
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
ho fatto una prova...allora la situazione è questa:
Server e client1 sono sulla stessa macchina client2 è su un'altra; la serversocket la crea client1, però quando in client2 mi vado a connettere attraverso Socket s = new Socket(nomepc,porta) mi da errore (connection timeout), mentre se uso Socket s = new Socket(IP,porta) funziona . cosa pensate possa essere? |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
se passi un riferimento mnemonico all' host, devi essere sicuro che l' infrastruttura di rete sia in grado di risolverlo, in questo caso attraverso netbios o un local DNS.
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
a quanto pare non ho chiare delle cose sulle socket.... perchè se io su entrambe i client faccio
InetAddress address = InetAddress.getByName(nome pc); System.out.println(address); il risultato della sistem.out è sempre lo stesso in entrambe i casi.... :S cambia solo il nome del pc ma l'ip è lo stesso NOME PC/IP |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
se tu metti localhost oppure il nome del pc-locale avrai sicuramente una risoluzione (almeno che non sia corrotto il file hosts). Se metti il nome di un altro pc, lavorando si windows al 99% riuscirai a risolverlo tramite netbios, ma se questi è disabilitato oppre la rete è mista è necessario che quel nome venga risolto da un DNS.
Ora credo il tuo caso rientri nelle ipotesi più semplici. Alternativamente puoi creare all' interno del tuo protocollo un sistema proprietario di naming, in grado di associare ad un nome il corrispettivo host. |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
si il mio è il caso piu semplice...però non riesco ancora a capire una cosa...
perchè se faccio: InetAddress address = InetAddress.getByName(nomePClocale); System.out.println(address); e InetAddress ia = InetAddress.getLocalHost(); System.out.printlm(ia.getHostAddress()); nella stessa classe ottengo due IP diversi??? non dovrebbe essere identico |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
uno ti restituisce l' indirizzo di loopback, l' altro quello dell' interfaccia di rete.
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
la mia difficoltà è nel reperire l'IP del client per metterlo nel primo campo del metodo socket...io del client ho a disposizione il nome
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
devi utilizzare il primo, che non è quello di loopback.
Probabilmente ti è utile capire un po come funziona il protocollo ip (ed eventualmente trasporto), in modo da maneggiare meglio i Socket, che ne rappresentano un' astrazione. |
![]() |
![]() |
![]() |
#14 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
grazie per i preziosi consigli, ho quasi risolto tutti i problemi tranne questo:
ho bisogno di convertire un indirizzo IP che ho sotto forma di stringa in oggetto InetAddress....come posso farE??? |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
come hai già fatto nei post precedenti va bene.
|
![]() |
![]() |
![]() |
#16 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
ho finalmente impostato la connessione UDP però quando vado a spedire un pacchetto dal client 1 al client 2 il pacchetto arriva solo nel caso 1->2 .
nel caso 2->1 il serverUDP rimane in attesa del pacchetto... ho fatto delle prove e questo succede solo quando a fare da server è il client che non è in locale con il SERVERCENTRALE. può essere che visto che è in locale la send arriva prima delle receive? |
![]() |
![]() |
![]() |
#17 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
perfetto, ho risolto quasi tutto...!! grazie per i preziosissimi consigli!! ora mi manca solo costruire un grafo dove rappresentare la velocità di connessione tra i vari client....ma esiste qualche libreria grafica di java che faccia questo?
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Oppure prova a cercare in questa lista: http://www.dmoz.org/Science/Math/Com...Graph_Drawing/
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
|
|
![]() |
![]() |
![]() |
#20 |
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:33.