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

    [C\C++] winsock.h e UPnP

    Salve a tutti. Sto cercando di creare una semplice applicazione server-client in console. L'applicazione è abbastanza banale, si limita a trasmettere stringhe di carattere da un programma client a uno server e quest' ultimo le stampa a video. Fin qui sono riuscito molto bene usando il protocollo TCP e la libreria winsock.h.

    Adesso vorrei risolvere un problema fastidioso, quello dell'apertura delle porte TCP in automatico sul programma server, piuttosto che aprirle a mano dal router per velocizzare la configurazione e fare comunicare i due programmi tramite internet. Mi hanno parlato di UPnP ma non capisco una cosa, tratta di una tecnologia o c'è anche una libreria usabile?

    Se è presente una libreria potete indirizzarmi verso codici esempio perfavore?


    Vi ringrazio infinitamente per la vostra pazienza e il vostro aiuto.
    Buona serata.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In genere, per motivi di sicurezza, l'apertura delle porte del router non è automatico e comunque è necessaria l'autenticazione dell'amministratore del router. Ed è anche bene che sia così altrimenti trojan e virus potrebbero agire indisturbati ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Diciamo che il mio intento non è proprio aprire una porta in modo permanente. Vorrei solo che il programma server (che sta in locale) aprisse quella porta (in locale) solo per la durata del programma o della comunicazione col client. Insomma una cosa tipo utorrent che si autoconfigura le porte per la durata dell'esecuzione e basta.

    E' ancora impossibile così?
    Grazie comunque della risposta.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da siciliano87
    Diciamo che il mio intento non è proprio aprire una porta in modo permanente. Vorrei solo che il programma server (che sta in locale) aprisse quella porta (in locale) solo per la durata del programma o della comunicazione col client. Insomma una cosa tipo utorrent che si autoconfigura le porte per la durata dell'esecuzione e basta.
    Il concetto è il medesimo, o temporaneo o definitivo, non cambia.

    E' ancora impossibile così?
    Senza fornire le credenziali di amministratore al router? Ovviamente è impossibile ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Allora per fare comunicare 2 programmi è sempre necessario agire sul router del server manualmente ok. Ho visto che ci sono programmi che usano porte aperte di default tipo la 80 (http se non erro). Come faccio a usarla temporaneamente per comunicare? E' sempre bloccata, c'è un modo per "prenotarsi" per usarla ogni tanto?

    In ogni caso mi sono chiarito molti dubbi. Grazie molte.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La porta 80 è aperta nel caso in cui sul PC/server sia attivo un Web Server. In caso contrario, normalmente, tutte le porte sono chiuse.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Senza fornire le credenziali di amministratore al router? Ovviamente è impossibile ...
    In realtà che io sappia molti router "domestici" supportano l'apertura delle porte via uPnP senza autenticazione, infatti in ambiti lavorativi è la prima cosa che disattivo.
    Comunque, qui trovi diverse informazioni e un client uPnP pronto con tanto di sorgenti.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma non si può basare un progetto client server (eventualmente da distribuire) facendo affidamento sulle presunte caratteristiche del router di destinazione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Grazie mille MItaly era quello che cercavo.

  10. #10
    Originariamente inviato da oregon
    Ma non si può basare un progetto client server (eventualmente da distribuire) facendo affidamento sulle presunte caratteristiche del router di destinazione.
    Vero, però fa parte dei "nice to have" - tanti programmi che potenzialmente necessitano di un port forwarding (ad esempio Transmission, nello screenshot) implementano una funzionalità del genere (naturalmente disattivabile), in modo da aprirsi la porta "da sé" se sono in grado, e lamentarsi con l'utente in caso contrario.
    Immagini allegate Immagini allegate
    Amaro C++, il gusto pieno dell'undefined behavior.

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.