Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    [C++/Qt] Port scanner, verificare se una porta è aperta

    Buongiorno ragazzi,

    studiando per l'esame di Reti di Calcolatori mi è venuta l'idea di creare un port scanner con Qt.
    Per sapere se una porta è aperta si crea una connessione TCP e se l'handshake termina allora è aperta, altrimenti è chiusa. Fin qui vado bene?

    Suppongo di dover usare QTcpSocket e il metodo connectToHost(localhost, port). Il punto è che, premesso che tutto questo sia giusto, come faccio a capire se la connessione è stata instaurata?

    Suggerimenti? Anche per un metodo alternativo più efficiente.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Controlla se viene restituito un errore o no.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Mi da sempre porta chiusa. Il codice che ho scritto è questo (si aziona quando premo il tasto start della GUI):

    codice:
    void MainWindow::on_pushButton_clicked()
    {
        QHostAddress ipAddr = QHostAddress::LocalHost; // Local Host
        int port = 1;
    
    
        for(port; port<=1024; port++)
        {
            socket = new QTcpSocket(this); // Create the TCP socket
            socket->connectToHost(ipAddr, port);
            if(socket->state()==QTcpSocket::ConnectedState)
            {
                // Port is open
                QString s = "Port " + QString::number(port) + " is open!";
                ui->listWidget->addItem(s);
            }
            else
            {
                // Port is closed
                QString s = "Port " + QString::number(port) + " is closed!";
                ui->listWidget->addItem(s);
            }
            delete socket;
        }
    
    
    }
    Ultima modifica di goatboy; 09-08-2014 a 13:57

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma port inizialmente quanto vale?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Ho settato port uguale ad 1. Ho avuto problemi a inserire il codice quindi controlla perchè magari hai visto il codice di prima, dove non era presente l'inizializzazione.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Può darsi che il tuo pc abbia quelle porte chiuse dato che usi il localhost. Prova con l'IP del forum e vedi se è aperta la porta 80
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Mi dice che è chiusa. Forse sbaglio il metodo per controllare se è stata effettuata la connessione...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Utilizza la

    bool waitForConnected ( int msecs = 30000 )

    dopo la richiesta di connessione e controlla il valore restituito.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Ora mi conferma che la porta 80 del forum è aperta. Il metodo aspetta tot msecs per stabilire la connessione?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No, quello è il timeout ... quindi prova ad impostarlo a 1000 o meno per perdere meno tempo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.