Scelta IP in chat client-server

di il
63 risposte

Scelta IP in chat client-server

Ciao a tutti, sto realizzando in C# una specie di chat client-server molto basilare.
Volevo sapere come devo impostare l'indirizzo ip del server e quello del client.
In pratica se voglio simulare la chat dal mio PC funziona alla perfezione, nel server metto l'IP del mio PC (ad esempio 192.168.1.7). Nel client metto lo stesso e riesco a collegarmi.
Stessa cosa fatta tra due PC che ho in casa e funziona.

La mia domanda è: nel caso volessi uscire al di fuori della mia LAN, che indirizzi ip devo impostare io nel server e che IP devo far inserire al client nel programma per far si che si colleghi al server?

Grazie in anticipo.

63 Risposte

  • Re: Scelta IP in chat client-server

    Il server girerà sull'ip locale del pc (192.... con la porta che hai scelto)
    Dovrai nattare ip e porta sul router (ip pubblico - ip privato del server). L'ip pubblico della connessione potrebbe variare se non è fisso.

    Il client si collegherà all'ip pubblico e porta scelta sul sistema server.
  • Re: Scelta IP in chat client-server

    Quindi in pratica è molto difficile da eseguire? Perché l' Indirizzo IP pubblico varia molto spesso. Per avere un IP pubblico fisso dovrei acquistare un indirizzo dal mio ISP, cosa che ovviamente non posso fare.
    Mi sbaglio?

    Riguardo al client invece non deve Nattare niente giusto?
  • Re: Scelta IP in chat client-server

    Che intendi con "difficile da eseguire"?

    Non so perché tu non possa comprare l'IP fisso.

    Comunque l'alternativa, se il router gestisce il DNS Dinamico (DDNS), registrarsi presso un servizio del genere e usare un "nome" al posto dell'IP. In questo modo ti riferirai sempre al 'nome' e l'IP sarà aggiornato automaticamente dal router.
  • Re: Scelta IP in chat client-server

    Difficile da eseguire inteso proprio per il fatto che l'indirizzo IP pubblico varia.
    Non posso comprare l'IP fisso perché non è un programma professionale, è a scopo didattico e sinceramente non voglio spenderci soldi.

    Penso che riguardo al DDNS non sia possibile, in quanto non saprei come gestirli nel mio programma.
  • Re: Scelta IP in chat client-server

    Non devono essere gestiti nel tuo programma, è il router che lo dovrà fare dopo che ti sarai registrato sul sito del servizio.

    Nel programma metterai il nome al posto dell'ip, esattamente come fai con

    https://www.iprogrammatori.i

    al posto di 31.14.137.131

    Non ci sono alternative ...
  • Re: Scelta IP in chat client-server

    Mi sono spiegato male, le funzioni nel programma accettano indirizzi IP, non DNS.
    E' quello che intendo con "penso che riguardo al DDNS non sia possibile, in quanto non saprei come gestirli nel mio programma."
  • Re: Scelta IP in chat client-server

    Non so quali funzioni usi ma mi riferisco alla classica gethostbyname che ti permette di ottenere l'ip a partire dal nome.
  • Re: Scelta IP in chat client-server

    Ok sto pomeriggio provo, invece il client non deve nattare niente?
  • Re: Scelta IP in chat client-server

    Il client contatta l'IP pubblico del server su Internet. Non deve fare altro.
  • Re: Scelta IP in chat client-server

    Ok ma le regole del NAT le devo impostare solo in entrata giusto? Perché in teoria in uscita se ne occupa il mio router.
    Dimmi se sbaglio.
  • Re: Scelta IP in chat client-server

    In entrata che intendi ?

    SOLO lato server. Sul router del client non devi fare nulla.
  • Re: Scelta IP in chat client-server

    Sisi, quello l'ho capito, intendo in entrata al mio router, quando il client comunica con il server.
    Il DNS nel programma sono riuscito ad implementarlo. Il DDNS sono riuscito a crearlo ed mio modem è compatibile.
    Il problema ora è la programmazione del router. Sono abbastanza capace a programmare router cisco.
    Io ho un telecom e da scemo non ho pensato che misà che non si può programmare.
  • Re: Scelta IP in chat client-server

    Non devi programmare ma configurare il router. C'è sempre una interfaccia web con una password per accedere alla configurazione del router.

    Ma il client e il server che utilizzi stanno su reti diverse?
  • Re: Scelta IP in chat client-server

    Bhè guarda la situazione è semplice.
    Innanzitutto saprai (ritengo) quale porta utilizzano i tuoi programmi per comunicare.
    Infatti il flusso IP non avviene su indirizzi IP, bensì sulla coppia IP:porta (e protocollo, ovviamente, ma lasciamo stare).

    Pertanto se il tuo programma di chat utilizza la porta (poniamo) 12345, dovrai SU ENTRAMBI gli host (cioè i due computer perchè questo saranno alla fine suppongo), e supponendo di utilizzare "banali" router con "banali" collegamenti ADSL caserecci, un instradamento delle porte verso gli indirizzi LAN locali.

    E' un argomento banale e trito e ritrito, comunque ti metto un esempio che magari ti sarà utile per risparmiare tempo.

    Supponiamo di avere un PC di indirizzo LAN 192.168.1.2 collegato ad un certo router a sua volta collegato ad internet con l'indirizzo LAN 192.168.1.1 e pubblico 80.81.82.83 (quest'ultimo è assegnato dal provider e normalmente non si può cambiare, anzi varia ogni tanto quando si riavvia il router, cade la linea etc)

    Supponiamo che il secondo PC abbia sempre l'indirizzo IP 192.168.1.22, collegato ad un router con LAN 192.168.1.240 ed IP pubblico 84.85.86.87

    Supponi che la tua applicazione utilizzi la porta 12345 per comunicare (TCP).
    Allora nel router #1 (di indirizzo locale 192.168.1.1) dovrai impostare una regola del tipo: la porta 12345 la mandi su 192.168.1.2
    Poi, ragionevolmente, attiverai servizi DDNS (DINAMICO-dns) per associare che so
    80.81.82.83 a mio.computer.it


    Nel router #2 (di indirizzo locale 192.168.1.240) DIPENDE.
    Dipende nel senso che se la tua applicazione può essere "invertita" come server-client (cioè i due computer possono cambiare ruolo) metterai che la porta 12345 la mandi su 192.168.1.240
    Se invece il computer #2 è solo un client, cioè INIZIA LUI sempre la connessione, utilizzando i routerelli normali (quindi senza tabelle di firewall evolute) avrai un mantenimento delle connessioni aperte e - tipicamente - anche su porte random.
    Cioè il computer #2 userà (dipende, vedi te, il programma l'hai scritto te!) una porta "qualsiasi" (*non sto a dire cosa significa "qualsiasi"), tipo 44455 la prima volta, poi 22321 la seconda e così via.
    Il router #2 capirà che la connessione è stata aperta da 192.168.1.22:44455 => 80.81.82.83:12345 ed automaticamente reinstraderà i messaggi in arrivo (cioè da 80.81.82.83:12345=> 84.85.86.87:44455 sul secondo computer cioè 192.168.1.22:44455)
    ----------
    La situazione può essere mutata con l'utilizzo di regole asimmetriche (cioè non del tipo 1:1), ma lasciamo stare per ora
Devi accedere o registrarti per scrivere nel forum
63 risposte