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

    [principiante] verificare se una porta è aperta

    mi da questo errore: Messaggio di errore del compilatore: CS1519: Token non valido "=" nella dichiarazione del membro della classe, della struttura o dell'interfaccia.

    dove sbaglio? (di asp.net ne so quasi nulla: uso JScript di solito)

    codice:
    <%@ Page  Language="C#" Debug=true %>
    <%@ Import Namespace="System.Net.Sockets" %>
    <%@ Import Namespace="System.Web.Util" %>
    
    <script runat="server">
    
    public const int     NULLA      = 0;
    public const int     APERTA     = 1;
    public const int     CHIUSA     = 2;
    
     String   Addr = "192.168.0.1";
     int      Port = 80;
     int      Stat = NULL;
        
      TcpClient  Sock;
    
        Sock = new TcpClient ();
        try
          {
            Sock.Connect (Addr, Port);
            Sock.Close ();	
          }
        catch (Exception E)
          {
    	Stat = CHIUSA;	
          }	  
        Sock = null;
    
    
    Response.Write (Stat);
    
    </script>
    filo_2k

  2. #2
    Utente di HTML.it L'avatar di Alendar
    Registrato dal
    May 2002
    Messaggi
    169
    null minuscolo

  3. #3
    Utente di HTML.it L'avatar di Alendar
    Registrato dal
    May 2002
    Messaggi
    169
    scusa.
    Il motivo per cui ricevi quelmessaggio di errore sono le dichiarazioni di costanti come public, che è una parola riservata alla definizione di tipi e non di variabili locali.

    Per qualche strano motivo il compilatore riporta l'errore su Sock, ma in realtà se elimini public dalla definizione delle costanti tutto dovrebbe funziere.

  4. #4
    Utente di HTML.it L'avatar di Alendar
    Registrato dal
    May 2002
    Messaggi
    169
    orpo!
    Ultima nota:
    non puoi assegnare null ad una variabile di tipo intero, essendo queta un tipo valore e non un tipo puntatore.
    (cioè gli interi contengono valori effettivi e vengono inizializzati a 0 mentre i tipi riferimento, tipo object e string, contengono indirizzi di altre variabili, per dirla un po' alla carlona).
    Byez

  5. #5
    Il tuo esempio "modificato" può essere:

    <%@ Page Language="C#" Debug=true %>
    <%@ Import Namespace="System.Net.Sockets" %>
    <%@ Import Namespace="System.Web.Util" %>

    <script runat="server">

    public const int NULLA = 0;
    public const int APERTA = 1;
    public const int CHIUSA = 2;

    void Page_Load(Object sender, EventArgs e) {
    string Addr = "192.168.0.1";
    int Port = 80;
    TcpClient Sock = new TcpClient();
    try {
    Sock.Connect(Addr, Port);
    Sock.Close();
    Response.Write("Connessione alla porta " + Port);
    } catch (Exception E) {
    Response.Write(E.Message);
    //Stat = CHIUSA;
    }
    Sock = null;
    }

    </script>

  6. #6
    cosi funziona: perfetto!

    ..ma per metterlo in una funzione?

    vi spiego quello che ho bisogno fi fare:
    in un db di access ho una tabella con degli ip e delle porte, la pagina deve dirmi quali di quei record sono attivi (connessione riuscito) e quali no.

    grazie
    filo_2k

  7. #7
    Beh, fai così: crei un dataset, ti connetti al db e popoli il dataset.
    Prima di proseguire sarebbe il caso di modificare il codice precedente in questo modo:

    private bool CheckStatusPort(string Addr, string Port) {
    string Addr = "192.168.0.1";
    int Port = 80;
    TcpClient Sock = new TcpClient();
    try {
    Sock.Connect(Addr, Port);
    Sock.Close();
    return true;
    } catch (Exception E) {
    return false;
    }
    Sock = null;
    }

    Così, richiamando CheckStatusPort riceverai un valore booleano a seconda dell'apertura o meno della porta.

    Ecco un esempio di come proseguire:

    string dbAddr, dbPort;
    DataSet ds = ... // Popolo il dataset
    for (int i=0; i < ds.Tables[0].Rows.Count; i++) {
    dbAddr = (string) ds.Tables[0].Rows[i]["Addr"];
    dbPort = (string) ds.Tables[0].Rows[i]["Port"];
    if ( CheckStatusPort(dbAdrr, dbPort) )
    Response.Write(dbAddr + ": " + dbPort + " - Porta aperta");
    else
    Response.Write(dbAddr + ": " + dbPort + " - Porta utilizzata");
    }

    Spero di essermi fatto capire

  8. #8
    chiarissimo: grazie mille.

    azz e io che ero abiutato a fare un semplicissimo function (addr, port) con asp semplice :quote:

    una precisazione pero (dovrei riuscire a sistemare da solo cmq)

    private bool CheckStatusPort(string Addr, string Port) {
    // addr e port non devo dichiararli di nuovo vero? a poi port non dovrebbe essere int?
    string Addr = "192.168.0.1";
    int Port = 80;
    TcpClient Sock = new TcpClient();
    try {
    Sock.Connect(Addr, Port);
    Sock.Close();
    return true;
    } catch (Exception E) {
    return false;
    }
    Sock = null;
    }

    Così, richiamando CheckStatusPort riceverai un valore booleano a seconda dell'apertura o meno della porta.

    Ecco un esempio di come proseguire:

    string dbAddr, dbPort;
    DataSet ds = ... // Popolo il dataset
    for (int i=0; i < ds.Tables[0].Rows.Count; i++) {
    dbAddr = (string) ds.Tables[0].Rows[i]["Addr"];
    // idem come sopra: port dovrebbe essere int o sbaglio?
    dbPort = (string) ds.Tables[0].Rows[i]["Port"];
    if ( CheckStatusPort(dbAdrr, dbPort) )
    Response.Write(dbAddr + ": " + dbPort + " - Porta aperta");
    else
    Response.Write(dbAddr + ": " + dbPort + " - Porta utilizzata");
    }
    filo_2k

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.