PDA

View Full Version : [Java]MultiClient-Server in locale


zuper85
31-03-2008, 22:27
Salve.

Praticamente sussiste il problema di realizzare un'applicazione distribuita composta da una centrale(server) che gestisce la comunicazione di alcuni client (intorno la decina).

La centrale riceve i messaggi dai client, li elabora e ritorna loro i risultati, oppure la centrale manda semplicemente messaggi a qualche client ,comunque la comunicazione passa sempre per la centrale.

Se l'applicazione fosse realmente distribuita ogni stazione client avrebbe il proprio indirizzo(IP)(come il server), ma siccome il programma deve girare in locale ho disposizione un solo IP ossia il localhost,

Per distinguere una centrale da un altra mi vedo per il momneto costretto a giocare con le porte, praticamente se ho 10 client ho bisogno di occupare 10 porte (col rischio che se 1 è occupata va tutto in malora).

Adesso per la verita non sono molto esperto per quanto riguarda lo svluppo di applcazioni client-server, ma nella mia situazione qualcuno che ne capisce qualcosa cosa farebbe?

Grazie

dupa
31-03-2008, 22:53
Salve.

Praticamente sussiste il problema di realizzare un'applicazione distribuita composta da una centrale(server) che gestisce la comunicazione di alcuni client (intorno la decina).

La centrale riceve i messaggi dai client, li elabora e ritorna loro i risultati, oppure la centrale manda semplicemente messaggi a qualche client ,comunque la comunicazione passa sempre per la centrale.

Se l'applicazione fosse realmente distribuita ogni stazione client avrebbe il proprio indirizzo(IP)(come il server), ma siccome il programma deve girare in locale ho disposizione un solo IP ossia il localhost,

Per distinguere una centrale da un altra mi vedo per il momneto costretto a giocare con le porte, praticamente se ho 10 client ho bisogno di occupare 10 porte (col rischio che se 1 è occupata va tutto in malora).

Adesso per la verita non sono molto esperto per quanto riguarda lo svluppo di applcazioni client-server, ma nella mia situazione qualcuno che ne capisce qualcosa cosa farebbe?

Grazie
visto che c'è un solo server, i client devono solo sapere ip e porta del server e quando si collegano il server, scopre la porta e ip dei client.

zuper85
01-04-2008, 08:19
questo lo so, ma una volta instaurata un conessione client-server, io vorrei mantenerla viva per tutto l'esecuzione del programma, puo capitare che il server di sua iniziativa, decida di mandare un messaggio ad un client, dunque ogni client deve avere un indirizzo(ip+porta ) ben definito, o ci sono altri modi?

dupa
01-04-2008, 09:34
questo lo so, ma una volta instaurata un conessione client-server, io vorrei mantenerla viva per tutto l'esecuzione del programma, puo capitare che il server di sua iniziativa, decida di mandare un messaggio ad un client, dunque ogni client deve avere un indirizzo(ip+porta ) ben definito, o ci sono altri modi?

anni fa con Java RMI avevo fatto una cosa simile, in pratica quando il client si collegava al server gli dava una callback reference. Però ormai RMI è abbastanza superato e tra l'altro se ci stanno di mezzo proxy/firewall/router è un gran casino..

Forse è + comodo l'approccio con i client che periodicamente chiedono al server se ha qualcosa per loro..

zuper85
01-04-2008, 09:48
quindi l'unica soluzione disponibile per ora sembra di disporre il server di varie porte e di assegnarne 1 oper ogni client......ma la cosa ha un casino di inconvenienti

dupa
01-04-2008, 09:49
quindi l'unica soluzione disponibile per ora sembra di disporre il server di varie porte e di assegnarne 1 oper ogni client......ma la cosa ha un casino di inconvenienti

dipende che tecnologie vuoi usare
cmq il server apre solo una porta.

wizard1993
01-04-2008, 14:19
Se l'applicazione fosse realmente distribuita ogni stazione client avrebbe il proprio indirizzo(IP)(come il server), ma siccome il programma deve girare in locale ho disposizione un solo IP ossia il localhost,


nei test ti può bastare anche un solo client, la cos migliore è crearsi una qalsiasi macchina virtuale con una distro linux (cosa che si fa in mezz'ora) e definire tra i due una rete locale; per quel che mi riguarda funziona a meraviglia, magari non so se per te possa funzionare

zuper85
01-04-2008, 16:18
non penso sia il caso di creare ip virtualizzando.

Per ora la soluzione migliore (e l'unica fattibile) e che il server ha molte porte e i cliente si connettono ad una loro.. facendo coi thread non si risolve lo stesso :cry:

dupa
01-04-2008, 19:35
non penso sia il caso di creare ip virtualizzando.

Per ora la soluzione migliore (e l'unica fattibile) e che il server ha molte porte e i cliente si connettono ad una loro.. facendo coi thread non si risolve lo stesso :cry:

il server ha UNA sola porta aperta alla quale tutti i clienti si collegano.