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

    [C++] Socket, aprire porta dietro router

    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!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Mi pare che il tuo problema non abbia nulla a che fare con la programmazione, ma quanto più con problemi nella tua infrastruttura di rete.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Sì il problema è nella rete, ma mi chiedevo se fosse possibile superarlo con la programmazione, e cioè creare un server che in qualche modo riesce a funzionare anche se dietro router

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da veneziamestre
    Sì il problema è nella rete, ma mi chiedevo se fosse possibile superarlo con la programmazione, e cioè creare un server che in qualche modo riesce a funzionare anche se dietro router
    Se un router impedisce l'indirizzamento dei pacchetti e non espone una macchina, il software non potrà mai ricevere alcun dato.

    E' un po' come staccare il cavo e pretendere che, tramite un programma, si riesca comunque a comunicare.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Grazie alka per le risposte!

    Guarda, ho trovato questo: http://www.h-online.com/security/fea...ls-747197.html

    Sembra essere quello che cercavo, infatti mi chiedevo come fanno due software p2p come skype o programmi di sharing a creare una connessione diretta tra due nodi se entrambi sono dietro router.

    Una soluzione a quanto ho capito è usare un server che faccia da tramite tra i due cliente, ma non si tratta più di connessione p2p, mentre l'altra soluzione è quella descritta da questo articolo, che a quanto ho capito è simile al modo passivo dell'ftp.
    Questo in teoria, in pratica non ho idea di come realizzarlo, ma è già un inizio!

    Se avete altre idee o suggerimenti o intuizioni o qualsiasi altra cosa fatemi sapere

  6. #6
    Ok, credo di aver trovato la soluzione, basta utilizzare un server che faccia da intermediario, come avevo detto prima.
    Nel caso di skype il flusso audio/video è troppo elevato perché passi tutto tramite il server, perciò c'è la necessità di creare una connessione diretta tra i due client, mentre nel mio caso si tratta solo di ricevere qualche file di testo o al massimo qualche foto, quindi il tutto può passare tramite il server.

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.