Client server su reti differenti

Forum di discussione sul linguaggio Java e JSP

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
spx
New Entry
Messaggi: 5
Iscritto il: 09 ott 2017, 23:20

Client server su reti differenti

Messaggioda spx » 06 dic 2017, 23:41

Salve ragazzi! Vi pongo subito il mio problema. Ho creato due applicazioni client e server java e funziona tutto bene fin quando client e server vengono eseguiti su pc che si trovano nella stessa rete. Ora la mia domanda è:
Come faccio a mettere il server "online", cioè a fare in modo che sia accessibile anche da client che non sono sulla stessa rete? Ho spulciato su google ed ho trovato solo tante spiegazioni "a parole" ma nulla di concreto che indicasse una procedura da seguire. Qualcuno saprebbe indicarmi precisamente i passi da fare? Chiaramente poi posso informarmi da me su ogni singolo passo in dettaglio ma sinceramente vorrei una scaletta da seguire. Grazie mille f28
oregon
Utente Senior
Messaggi: 10078
Iscritto il: 20 nov 2011, 18:54
Località: Roma

Re: Client server su reti differenti

Messaggioda oregon » 07 dic 2017, 08:45

Nessuna scaletta... Devi ragionare sulla situazione degli apparati presenti nell'area server che sono sempre diversi. Non so quale router userai lato server ma lo devi configurare in modo che il flusso sulla porta scelta per la comunicazione sia nattato verso l'ip interno del tuo server. La pagina di configurazione e come il router ti permetterà di farlo dipendono da marca e modello.

Il client dovrà puntare all'ip pubblico del server e tutti gli eventuali firewall dovranno essere aperti.

Nulla di più.
___________________
"Il gioco del Lotto : la tassa sull'imbecillità". (Bruno De Finetti, grande matematico italiano)
spx
New Entry
Messaggi: 5
Iscritto il: 09 ott 2017, 23:20

Re: Client server su reti differenti

Messaggioda spx » 08 dic 2017, 12:05

oregon ha scritto:Nessuna scaletta... Devi ragionare sulla situazione degli apparati presenti nell'area server che sono sempre diversi. Non so quale router userai lato server ma lo devi configurare in modo che il flusso sulla porta scelta per la comunicazione sia nattato verso l'ip interno del tuo server. La pagina di configurazione e come il router ti permetterà di farlo dipendono da marca e modello.

Il client dovrà puntare all'ip pubblico del server e tutti gli eventuali firewall dovranno essere aperti.

Nulla di più.


Ciao oregon e grazie della risposta. Potresti dirmi se quindi è sufficiente fare quanto segue?

Supponiamo che l'ip del mio pc(server) sia 192.168.1.200 e che l'ip pubblico della rete sia 92.45.255.235
Nelle impostazioni del modem vado nella schermata del port forwarding ed imposto che il traffico su una porta, diciamo la 328, venga indirizzato verso l'ip 192.168.1.200 (cioè il mio pc che funge da server).
Per la parte java, invece, nel server ci metto questa riga:

Codice: Seleziona tutto

Server = new ServerSocket(328);

mentre nel client questa:

Codice: Seleziona tutto

socket = new Socket("92.45.255.235",328);

chiaramente il codice completo è più esteso, ma credo sia questa la parte "critica".
So anche dell'ip dinamico che cambia continuamente ma credo che per fare almeno una prova in tempo reale non sia necessario avere un ip statico, sbaglio?
Grazie dell'attenzione :D
Avatar utente
andbin
Utente Senior
Messaggi: 3038
Iscritto il: 30 ott 2013, 21:51
Località: Torino
Contatta:

Re: Client server su reti differenti

Messaggioda andbin » 08 dic 2017, 17:07

spx ha scritto:Nelle impostazioni del modem vado nella schermata del port forwarding ed imposto che il traffico su una porta, diciamo la 328, venga indirizzato verso l'ip 192.168.1.200 (cioè il mio pc che funge da server).

Sì, va aggiunta una regola (dove/come dipende appunti dal prodotto hardware che si ha) che in pratica dice "tutto quello che arriva dalla WAN sulla porta x "giralo" sulla LAN all'indirizzo Y".
(WAN è il termine usato nei router per indicare la porta fisica verso internet)

Ma non basta, ci sono altre 2 questioni.

1) sulla macchina dove gira il server ci potrebbe essere un firewall software, che può essere quello eventualmente già integrato nel S.O. oppure un prodotto di terze parti. Anche qui devi averne il "controllo" ed andare ad "aprire" la porta che usa il server.

2) client e server sono connessi ad internet tramite un certo provider, potrebbe essere lo stesso oppure no. I provider potrebbero avere politiche di sicurezza più o meno restrittive per cui bloccano solo certe porte, oppure tutte tranne alcune.
Se è il provider che blocca una certa porta, c'è ben poco, anzi praticamente nulla da fare ... devi scegliere tu un'altra porta che sia usabile.

spx ha scritto:Per la parte java, invece, nel server ci metto questa riga:

Codice: Seleziona tutto

Server = new ServerSocket(328);

mentre nel client questa:

Codice: Seleziona tutto

socket = new Socket("92.45.255.235",328);

chiaramente il codice completo è più esteso, ma credo sia questa la parte "critica".

Sostanzialmente sì. Nel client chiaramente non è bene "cablare" l'indirizzo nel sorgente. Lo si può passare/parametrare in altri modi.

spx ha scritto:So anche dell'ip dinamico che cambia continuamente ma credo che per fare almeno una prova in tempo reale non sia necessario avere un ip statico, sbaglio?

Sì, per prove va anche bene un ip dinamico, finché sei tu che conosci il IP "pubblico" o qualcun'altro a cui lo puoi comunicare. Tieni comunque presente che l'indirizzo cambia solo ad ogni connessione che il router fa verso il provider. Se tieni il router accesso 24/24h e non ci sono disconnessioni casuali o esplicite, il router può tenere un IP dinamico anche per giorni se non addirittura settimane/mesi.

L'ideale sarebbe un IP "statico" ma ovviamente è un servizio specifico e che costa.
L'alternativa è usare un servizio di "Dynamic DNS" (DDNS) ma dovrebbe essere il router ad avere il supporto per quel certo servizio.
I router moderni tipicamente hanno supporto almeno per il servizio http://www.dyndns.org (che però mi pare non sia più "gratis") e magari anche qualcun'altro.
Andrea, www.andbin.net — Senior Java developer — SCJP 5 (91%) – SCWCD 5 (94%)
Il mio blog sulla programmazione

Torna a “Java”

Chi c’è in linea

Visitano il forum: andbin e 25 ospiti