Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Programma di chat in java

    ciao a tutti,
    dovrei fare un programma di chat in java ma ho un problema: non riesco a far comunicare tra di loro due utenti su due macchine diverse collegate in internet. se i pc sono collegati in locale la chat funziona senza problemi ma tramite internet non ho ancora capito come risolvere. il problema penso sia dovuto al nat dei router ai quali i pc si connettono per fare l'accesso a internet.
    SCHEMA DEL COLLEGAMENTO:
    pc1(ip locale) <-----> router1 (ip1) <------> internet <------> router2 (ip2 ) <-------> pc2 (ip locale)

    la chat è basata sul sistema client/server (ovvero su un pc avvio il server e ci collego un client mentre sull'altro avvio solo un client che si collega al server). il programma vorrei che fosse user-friendly cioè che per farlo funzionare non si debba modificare delle impostazioni sui router ma che basti il solo codice del programma.
    qualcuno sa come risolvere il problema?
    Ultima modifica di LeleFT; 18-11-2014 a 12:43 Motivo: Rimossi link

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da Danix Danilovic Visualizza il messaggio
    il programma vorrei che fosse user-friendly cioè che per farlo funzionare non si debba modificare delle impostazioni sui router ma che basti il solo codice del programma.
    qualcuno sa come risolvere il problema?
    Questo è il punto focale: è impossibile avere un programma client/server che sia user-friendly al 100%. Questo perchè è chi amministra il router/firewall che decide chi passa e chi no, sia lato server, che lato del singolo PC client (altrimenti, addio alla sicurezza informatica!).

    Il problema più grosso, comunque, è nella parte "server": nella macchina dove gira la parte server il router/firewall deve essere opportunamente configurato in modo tale che quando arrivano richieste di connessione da quel particolare IP pubblico e quella precisa porta, la richiesta venga instradata correttamente in modo da raggiungere il programma server. Fine.

    I client, ovviamente, devono essere progettati in modo da effettuare la connessione verso l'IP pubblico del server (e non verso l'IP privato che non sarebbe MAI raggiungibile).

    Altro discorso se vuoi anche avere un client "locale" nella stessa rete del server: qui entra in gioco il DNS che deve saper dirottare correttamente le richieste verso l'IP pubblico in richieste verso l'IP privato (altrimenti, non si collegherà mai).

    Ad ogni modo, queste sono più che altro problematiche di rete, non di Java. Le stesse identiche problematiche le avresti con qualunque linguaggio tu decida di affrontare il problema.

    Ciao.
    Ultima modifica di LeleFT; 18-11-2014 a 12:45
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    grazie della risposta però vorrei capire meglio: i programmi di messaggistica istantanea come il vecchio msn o skype come fanno a funzionare senza che l'utente agisca sul router/firewall? si basano su un sistema diverso da client/server?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    No, semplicemente funzionano perchè nessuno blocca il traffico verso quell'indirizzo IP e quella porta.
    Le porte superiori alla 1024 sono le cosiddette "porte libere": generalmente nessuno blocca il traffico verso/da quelle porte, almeno non per l'utenza domestica (ma vi sono casi noti in cui il provider di servizi, al contrario, blocca tutto il traffico e sei costretto a mettere mano tu alla configurazione o contattarlo per farlo fare a lui: è discrezionale la cosa); meglio ancora: solitamente nessuno blocca il traffico (connessioni) IN USCITA su quelle porte, mentre spesso è bloccato il traffico IN ENTRATA.

    Se tu provi ad installare MSN o Skype all'interno di una rete aziendale, questi potrebbero anche non funzionare (dipende dall'amministratore della rete).

    Se installi una qualunque versione Server di Windows (ad esempio, un Windows Server 2008 R2, per citarne uno), automaticamente viene abilitato il Firewall: di default, nessuna delle porte libere è aperta, quindi l'eventuale applicazione "server" della tua chat semplicemente non riceverebbe alcuna connessione. Sei costretto tu (amministratore del server) a mettere mano alla configurazione del firewall per far passare il traffico sulla porta usata dalla tua applicazione.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    ok grazie della spiegazione. ho capito che il mio progetto non s'ha da fare...

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da Danix Danilovic Visualizza il messaggio
    ok grazie della spiegazione. ho capito che il mio progetto non s'ha da fare...
    E perchè mai?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    perchè la parte user-friendly era essenziale. l'idea di base che avevo era che un utente si scaricasse il programma e si avviasse il client e il server senza problemi di router e firewall alcuno, potendo cosi chattare direttamente con un altro utente con lo stesso programma

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Tutti i programmi di messaggistica comunque si fanno aprire un canale di accesso ( se questo è di default chiuso ).
    Non per questo sono meno user friendly.

    Anzi, il caro pidgin ( per citarne uno ) per alcuni protocolli potevi specificare porta di ascolto ( che ha un default ). Contattare un amministratore di rete per far aprire la porta non credo sia un problema ( anche in azienda, se la richiesta è motivata non vedo perché tu non possa essere esaudito ).
    RTFM Read That F*** Manual!!!

  9. #9
    anche basando la chat su un sistema P2P il problema del firewall/router rimane?
    (premetto che il sistema P2P non lo conosco per niente quindi potrei aver detto una cavolata )

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Sine, non hai modo di liberartene. Per far parlare 2 elementi bisogna avere il giusto canale. Pensa come voler telefonare a tizio senza conoscerne il num di telefono

Tag per questa discussione

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.