Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Socket dietro router

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    3

    Socket dietro router

    Ciao ragazzi ho implementato una chat in java usando le socket! In localhost funziona tutto bene... Il problema si pone quando faccio le prove con la parte Client e, invece di farla connettere in localhost al server, la faccio connettere tramite la rete, specificando l'indirizzo ip!
    Il problema è che io sono dietro un router, quindi naturalmente non posso dargli l'indirizzo interno.. tipo 192.168.0.x perchè non avrebbe senso. Dandogli invece l'indirizzo del router, il Client non si connette e mi da eccezione in timeout. Che indirizzo devo passare al Client per farlo connettere al mio server?? Tra l'altro il problema si ripresenta usando jboss!!! Se lo attivo e invece di mettere nel browser "http://localhost:8080" metto "http://mioip:8080" non mi si apre nulla!
    Cosa sbaglio??
    Spero di essere stato chiaro Buona giornata a tutti e grazie a chi mi aiuta!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Socket dietro router

    Originariamente inviato da Piter85
    Il problema è che io sono dietro un router
    Il problema (generalmente) non si pone mai ad "uscire" .... ma ad "entrare". I vari firewall hw o sw (o router con firewall interno) generalmente permettono qualunque uscita (che si può vietare in base al software che tenta la connessione e/o indirizzo/porta) mentre impediscono la entrata (che si può permettere espressamente solo dietro apposita configurazione).

    Originariamente inviato da Piter85
    quindi naturalmente non posso dargli l'indirizzo interno.. tipo 192.168.0.x perchè non avrebbe senso. Dandogli invece l'indirizzo del router, il Client non si connette e mi da eccezione in timeout. Che indirizzo devo passare al Client per farlo connettere al mio server??
    Facciamo come esempio lo scenario di 2 utenti collegati entrambi ad internet tramite un router ADSL. Potrebbero usare lo stesso provider o due provider differenti, non cambia. Quello che è importante sapere è che entrambe le connessioni hanno un indirizzo "pubblico" su internet, tipicamente dinamico assegnato dal provider (oppure "statico" che alla fin fine è sempre assegnato dal provider ma non cambia mai!).

    Se tu, utente A vuoi collegarti ad un servizio gestito da una macchina nella rete interna dell'utente B, ovviamente puoi anche (quasi sicuramente) non sapere quale è il IP sulla rete locale dell'utente B. Ma questo non importa, non potresti comunque "indirizzarlo".
    Quello che devi sapere è il IP "pubblico" che è quello che si "vede" su internet relativo alla connessione dell'utente B.

    Ci penserà poi il router dell'utente B a "traslare" una richiesta del tipo: se mi arriva una richiesta sul mio IP pubblico es. 102.100.80.70 sulla porta 80, lo "giro" sul PC interno 192.168.0.20 porta 80.

    L'utente B ovviamente deve aver configurato il suo router in modo che la porta X (es. 80) sia "aperta" e avvenga la traslazione su un IP della rete locale, a cui deve rispondere una macchina su cui "gira" il software che offre il servizio su quella porta.

    Ma a te, utente A che stai "uscendo" su internet per connetterti ad un servizio, serve solo avere il IP "pubblico" esposto su internet e ovviamente la porta.
    Ed è chiaro che se l'utente B ha una connessione con IP "dinamico", l'IP cambia, quindi non è molto appropriato per fornire "servizi". Per questo esistono degli appositi servizi, anche "free" di Dynamic DNS. In genere però se si devono fornire "servizi" sarebbe meglio avere su internet un IP statico.


    P.S. Tutto questo non centra nulla con Java (o altro linguaggio)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    3

    Re: Re: Socket dietro router

    Originariamente inviato da andbin
    Quello che devi sapere è il IP "pubblico" che è quello che si "vede" su internet relativo alla connessione dell'utente B.

    Ci penserà poi il router dell'utente B a "traslare" una richiesta del tipo: se mi arriva una richiesta sul mio IP pubblico es. 102.100.80.70 sulla porta 80, lo "giro" sul PC interno 192.168.0.20 porta 80.

    L'utente B ovviamente deve aver configurato il suo router in modo che la porta X (es. 80) sia "aperta" e avvenga la traslazione su un IP della rete locale, a cui deve rispondere una macchina su cui "gira" il software che offre il servizio su quella porta.
    Questo volevo sapere... è il router insomma che cerca tra i vari indirizzi interni quello che fornisce servizio per esempio sulla porta 80 e lo indirizza automaticamente a quella macchina precisa!
    Il problema allora sono i blocchi del firewall e del router... vedrò di configurarli bene allora!

    Originariamente inviato da andbin
    Ed è chiaro che se l'utente B ha una connessione con IP "dinamico", l'IP cambia, quindi non è molto appropriato per fornire "servizi".
    Sisi questo lo so... altrimenti dovrei dire ogni volta a tutti i miei amici qual'è il mio indirizzo ip Cmq visto che funzionava in localhost volevo fare una prova sulla rete ;D

    Grazie della spiegazione!!!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Socket dietro router

    Originariamente inviato da Piter85
    è il router insomma che cerca tra i vari indirizzi interni
    Non è che "cerca" (detto così è improprio!). Non cerca un bel nulla. Il router è configurato per quanto riguarda le regole di NAT (network address translation) per fare la traslazione in modo fisso. E il PC deve avere un IP fisso (statico), ovviamente.

    E se hai un firewall software sul PC devi pure configurarlo (qui non centra il NAT) semplicemente per "aprire" la porta. Altrimenti nemmeno nella tua rete locale si vedrebbe il servizio!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    3
    Quindi... vediamo se ho capito!!!
    1) Devo far connettere il mio pc con un "indirizzo interno" fisso al router
    2) Devo trovare il modo di inoltrare le richieste di servizio su una porta specifica verso quell'indirizzo interno!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Piter85
    Quindi... vediamo se ho capito!!!
    1) Devo far connettere il mio pc con un "indirizzo interno" fisso al router
    2) Devo trovare il modo di inoltrare le richieste di servizio su una porta specifica verso quell'indirizzo interno!
    Es.:
    codice:
    IP pubblico es.                               rete
    102.100.80.70        +--------------------+  locale   +-----------------------+
       {internet} -----> | router 192.168.0.1 | ---+----> | macchina 192.168.0.20 |
                         +--------------------+    |      +-----------------------+
                                                   +-...
    a) Devi configurare il router in modo che ci sia una voce nella gestione del NAT che dice (detto ora a parole): "gira le richieste dalla WAN (non devi indicare l'IP pubblico ... lo sa il router) sulla porta X verso il IP locale x.y.w.z".

    b) Devi "aprire" la porta X se c'è un firewall sulla macchina.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.