Vorrei programmare un server con i socket ma questo server è dietro router casalingo e non ho la possibilità di accedere alla configurazione del router, che comunque ha il firewall disattivato.
Il server è accessibile solo all'interno della lan ma non dall'esterno, e non riesco a trovare il modo di risolvere questo problema senza toccare il router.
Vi chiedo, è possibile bypassare questo problema conoscendo in anticipo l'ip del client che si connetterà?
Ho pensato ad una cosa tipo:
- il server che chiamo FEMMINA per non confonderci, conosce in anticipo l'ip del client che chiamo MASCHIO;
- il server FEMMINA si comporta da client, contattando il client MASCHIO, il quale non è dietro router, creando una connessione con esso;
- in questo momento il server FEMMINA si sta comportando da client, mentre il client MASCHIO si sta comportando da server;
- ora il server FEMMINA, essendosi comportato da client, ha una porta aperta verso MASCHIO, bypassando così il problema del router (un po' come succede con tutti i client, msn, web ecc..);
- secondo voi a questo punto è possibile rivoltare la situazione, facendo sì che FEMMINA sfrutti quella porta aperta per comportarsi da server?
So che è difficile da spiegare, spero abbiate capito! So che esistono tanti client che lo fanno, ad esempio quando anni fa usavo DC++ per condividere files con i miei amici, alcuni di loro utilizzavano una connessione "passiva", e quando ad esempio io scaricavo un file da loro, erano loro a fare la prima mossa, e cioè ad aprire la connessione.
Avete dei suggerimenti o ancora meglio delle risorse (siti, libri) che spieghino come fare?
Io ho pensato di fare semplicemente così, lasciare che FEMMINA sia il client, e MASCHIO il server, ma non capisco se questo mi creerà difficoltà nella programmazione oppure una volta creata la connessione tra i due nodi, conta poco chi è client e chi è server?
Ad esempio se MASCHIO volesse scaricare un file da una directory di FEMMINA, ma questa è il client, è lei che deve mandare il comando di upload file, e non MASCHIO il comando di download, sarebbe un po' come creare un server ftp ma a rovescio, non che non sia fattibile ma se posso evitarlo è meglio.
Vi ringrazio in anticipo per l'attenzione, se la domanda è troppo incasinata abbiate pazienza!![]()