Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    213

    capire a che rete appartengo e...

    Ciao a tutti sono nuovo del forum.
    mi sto scontrando con problema stupido concettualmente ma da perderci la testa a livello di istruzioni.
    devo scrivere un programma che capisca a quale rete appartiene il pc su cui gira il programma e successivamente mi dica tutti gli ip connessi a questa rete.
    confido nella vostro aiuto

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Hei letto il regolamento?

    I titolo devono essere dati con cognizione di causa (e questo lo modifico io).

    In secondo luogo... confidi in cosa? Se non posti niente, su cosa ti si danno gli aiuti? Hai provato a consultare la documentazione delle classi del package java.net? Hai provato a scrivere qualcosa per vedere come si comporta? Qual è il problema specifico che hai incontrato?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    213
    ciao. innanzitutto mi scuso per gli errori.
    ieri ho passato la giornata a vedere la documentazione java.net ma quello che ho non credo fosse utile. detto in parole povere non riesco a capire e a tovare un metodo di una classe per vedere tutti gli ip della rete a cui il mio pc (su cui dovrebbe girare il programma) appartiene. una volta ottenuti questi ip manderò un mex ad ognuno di loro per vedere se hanno laporta 8000 aperta.

    spero di essere stato chiaro.

    grazie e ciao

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da terso88
    ciao. innanzitutto mi scuso per gli errori.
    ieri ho passato la giornata a vedere la documentazione java.net ma quello che ho non credo fosse utile. detto in parole povere non riesco a capire e a tovare un metodo di una classe per vedere tutti gli ip della rete a cui il mio pc (su cui dovrebbe girare il programma) appartiene. una volta ottenuti questi ip manderò un mex ad ognuno di loro per vedere se hanno laporta 8000 aperta.

    spero di essere stato chiaro.

    grazie e ciao
    Beh... "tutti gli IP" di una rete non è un'informazione così sconosciuta: trattasi di 255 valori (escludo lo 0) che vanno da "x.y.z.1" a "x.y.z.255".

    Quello che dovrai fare è testare, per ciascuno di essi, se è fisicamente presente una scheda di rete (basta un ping, ma è "complessa" la gestione della risposta del ping), quindi testare la porta 8000.


    Detto con un po' di codice:

    codice:
    // Ottengo l'IP della mia macchina
    InetAddress ia = InetAddress.getLocalHost();
    byte[] mioIP = ia.getAddress();
    
    // Costruisco l'inizio del nuovo IP da testare
    byte[] altroIP = new byte[4];
    altroIP[0] = mioIP[0]; altroIP[1] = mioIP[1]; altroIP[2] = mioIP[2];
    
    // Scorro tutti gli indirizzi della mia rete:
    for(int i=1; i<256; i++) {
       if (i != mioIP[3]) {
          // Evito di fare un ping su me stesso :)
          altroIP[3] = i;
          if ( faiUnPingA( altroIP ) ) {
             // Se true, c'è una scheda di rete per questo IP
             testaPorta8000( altroIP );
          }
       }
    }
    Ovviamente dovrai implementare i metodi "faiUnPingA()" e "testaPorta8000()".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    213
    grazie leleft.
    un' ultima cosa potresti spiegarmi meglio la costruzione dell' inizio del nuovo ip?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    213
    ah ok.rileggendo il codice l'ho capito. mi aveva messo in crisi la riga unica.ahhah che scmeo che sono

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    213
    scusa lele ma quale è il metodo per inviare il pacchetto all' host con ip altroip e numero di porta 8000? e quale è il valore di ritorno?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da terso88
    scusa lele ma quale è il metodo per inviare il pacchetto all' host con ip altroip e numero di porta 8000? e quale è il valore di ritorno?
    Se stai parlando del PING non c'è niente di già pronto... è da fare a mano.

    Se intendi, invece, verificare se c'è un programma in ascolto sulla porta 8000 per un determinato indirizzo, non ti rimane altro da fare che aprire una Socket verso quell'indirizzo e la porta 8000:

    codice:
    Socket s = new Socket(address, 8000);
    dove "address" può essere una stringa che identifica l'host (un indirizzo IP o un nome di un PC), oppure un oggetto InetAddress che identifica unovcamente un IP.

    La creazione di un Socket effettua automaticamente la connessione, quindi se dall'altra parte c'è un server in ascolto sulla porta 8000 la socket verrà creata senza eccezioni, altrimenti andrà in timeout e verrà sollevata una eccezione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    213
    quindi devo fare un cast da un tipo primitivo byte (altro io) ad un tipo oggetto. ma si può fare o esiste solo il cast al contrario?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    No, non si tratta di un cast: si tratta di costruire l'oggetto nel modo corretto.

    Se vuoi utilizzare una stringa, partendo da un array di byte:

    codice:
    byte[] addr = ...;
    String address = "" + addr[0] + "." + addr[1] + "." + addr[2] + "." + addr[3];
    Se, invece, vuoi ottenere un InetAddress (consigliato):

    codice:
    byte[] addr = ...;
    InetAddress address = InetAddress.getByAddress( addr );

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.