Newsgroup: it.istruzione.universita.ingegneria
Titolo: Ingegneria del software: Java e RMI

Vorrei sapere come sia possibile, in una applicazione C/S basata su RMI,
permettere al server di conoscere gli indirizzi IP e PORT dei vari client
connessi in un momento (ovviamente se l'applicazione gira in locale è
sufficiente il port).
Oppure (che è la stessa cosa,al contrario) permettere a un client di sapere
quale è il proprio IP:PORT che vede il server.
Grazie

 sufficiente il port).
E' forse per realizzare un programma "alla Napster" per l'elaborato di Picco
al PoliMi? ^_^
Essenzialmente serve che ogni nodo si comporti sia come client che come
server, giusto?
Purtroppo così su due piedi non so risponderti (ho fatto l'anno scorso ing
del software -_- e non ho usato RMI) però ti consiglio di dare un'occhiata
anche a CORBA per fare queste cose... non escludo che possano esserci delle
soluzioni adatte perfettamente a quello che ti serve (Naming service? non so
se mi ricordo bene...)
Ciao
Ale

 ha scritto nel messaggio
news:acltak$qcvut$1...@ID-60042.news.dfncis.de...

Proprio così... si tratta di Picco-Napster.
il programma l'ho già sviluppato in RMI viste la complicatezza e
l'incomprensibilità di CORBA (
non metto in dubbio che CORBA sia migliore e che sarebbe interessante
impararlo a fondo,
ma quando si hanno 4 esami da fare si cerca di  fare nel modo più rapido!)
:-).
Il problema sta prima del tuo discorso sui nodi sia client che server.
Semplicemente quando il client
si connette al server centrale per effettuare una ricerca (e non a una altro
client), occorrerebbe
trasmettere al server stesso un riferimento del mio client (IP,Port) in modo
che un altro client possa
contattarmi quando cerca una canzone che ho io.
Mi occorrerebbe quindi che il client sapesse il "suo indirizzo" e la "sua
porta"  e li possa trasmettere al server
ma purtroppo i vari metodi .getPort() e .getInetAddress().. eseguiti sul
client mi restituiscono 0 e  0.0.0.0 ecc...!
Spero di essere stato chiaro.
Grazie di eventuali risposte.

 Grazie di eventuali risposte.
scusami, ma il server non può usare la sua socket per conoscere IP e porta
dei client connessi?
io ho lavorato un po' con Java su rete e mi pare che fosse
ServerSocket serverSocket=new ServerSocket(NUM_PORTA); //pone in ascolto il
server
...
Socket incoming=serverSocket.accept();
InetAddress clientAddr=incoming.getInetAddress();
int clientPort=incoming.getPort(); //mi pare sia int ma non ne sono sicuro
:)
fammi sapere, ciao
~~
artemis.alpeia

"artemis.alpeia" <it.i...@alpeia.artemis> ha scritto nel messaggio
news:H8IH8.4797$ie.1...@twister2.libero.it...

Il Server non ha una connessione socket perchè lavora su RMI, quindi i
classici comandi per ottenere
l'indirizzo e la porta non vanno. Dovrei, oltre al Server RMI crearne anche
uno Socket, ma perderebbe
un po' il senso...

 un po' il senso...
capisco, ma su cosa hai chiamato i metodi getPort() e  getInetAddress() che
ti restituiscono 0 e 0.0.0.0?
~~
artemis.alpeia

"artemis.alpeia" <it.i...@alpeia.artemis> ha scritto nel messaggio
news:1vQH8.7619$8x3.1...@twister1.libero.it...

Li avevo chiamati dal client (in questo caso la parte socket, perchè si
occupa del trasferimento diretto degli mp3
con gli altri utenti). Speravo che mi restituissero l'ip del client, ma
evidentemente funzionano solo se li chiamo
da un server.

 da un server.
ho fatto male  la domanda... su che oggetto hai chiamato quei metodi? A che
classe appartiene?
Dai comunque un'occhiata al tutorial della Sun sul protocollo RMI
http://java.sun.com/products/jdk/1.2/docs/guide/rmi/spec/rmiTOC.doc.html
si riferisce alla versione 1.2 ma dovrebbe fare al caso tuo
mi ha fatto venire la curiosità, non avevo mai avuto a che fare con RMI...
~~
artemis.alpeia