Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41

    [Java] Programma Traceroute e JNA

    Salve ragazzi ho un piccolo problema per cui vi chiedo aiuto, un mio professore mi ha chiesto di realizzare un software che sia in grado di utilizzare la libreria JNA (Java Native Access) che permettono di utilizzare le librerie native del sistema operativo con semplice codice Java.
    Ora non avendo la più pallida idea di che programma realizzare ho chiesto in giro e mi hanno ipotizzato di realizzare un TraceRoute poichè non è possibile farlo usando Java Standard ma ammetto di non sapere dove mettere le mani. C'è qualch anima pia che mi da una mano oppure mi suggerisce qualche altra cosa da fare? Ammetto di essere ignorante in materia :/

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

    Moderazione

    Ho spostato la discussione nel forum dedicato a Java.
    In futuro, poni qui le tue domande relative a questo linguaggio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [Java] Programma Traceroute e JNA

    Originariamente inviato da Gipple
    un mio professore mi ha chiesto di realizzare un software che sia in grado di utilizzare la libreria JNA (Java Native Access) che permettono di utilizzare le librerie native del sistema operativo con semplice codice Java.
    Premetto che la libreria JNA (https://jna.dev.java.net) non la conosco. Comunque sul sito vedo documentazione ed esempi, quindi basta leggere e .... sperimentare!

    È sicuramente più semplice rispetto all'utilizzo diretto di JNI (Java Native Interface) perché non devi scrivere alcunché a livello di codice "nativo". Ovviamente devi avere una buona conoscenza delle API del sistema operativo. Sebbene non devi scrivere nemmeno 1 riga di codice C/C++ devi comunque sapere come funzionano le API del sistema, i suoi tipi di dati/strutture, ecc...

    Innanzitutto dovresti precisare per quale sistema operativo intendi realizzare la tua applicazione.

    Originariamente inviato da Gipple
    Ora non avendo la più pallida idea di che programma realizzare ho chiesto in giro e mi hanno ipotizzato di realizzare un TraceRoute poichè non è possibile farlo usando Java Standard ma ammetto di non sapere dove mettere le mani.
    Il concetto dietro il "trace route" è tutto sommato semplice (lo spiega wikipedia qui ad esempio).

    Visto che non conosci bene la JNA e (da quanto posso intuire io) probabilmente nemmeno le questioni sulle API native, non credo che sia la cosa migliore partire in quarta per fare un "trace route".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41

    Re: Moderazione

    Originariamente inviato da alka
    Ho spostato la discussione nel forum dedicato a Java.
    In futuro, poni qui le tue domande relative a questo linguaggio.

    Ciao!
    Grazie, chiedo scusa ma mi era proprio sfuggito che esisteva la sezione apposita, si vede che ho postato di fretta

    Premetto che la libreria JNA (https://jna.dev.java.net) non la conosco. Comunque sul sito vedo documentazione ed esempi, quindi basta leggere e .... sperimentare! È sicuramente più semplice rispetto all'utilizzo diretto di JNI (Java Native Interface) perché non devi scrivere alcunché a livello di codice "nativo". Ovviamente devi avere una buona conoscenza delle API del sistema operativo. Sebbene non devi scrivere nemmeno 1 riga di codice C/C++ devi comunque sapere come funzionano le API del sistema, i suoi tipi di dati/strutture, ecc... Innanzitutto dovresti precisare per quale sistema operativo intendi realizzare la tua applicazione.
    Il problema è che ho letto e capito poco, io infatti avevo capito che rendesse gran parte delle funzioni native utilizzabili dallo stesso programma (cioè indipendentemente che giri sotto linux oppure sotto windows). Per quanto riguarda le API .. bhe quello sono a digiuno totale (possibile che in un corso di informatica non ci sia stato NESSUN CORSO che le spiegasse? L'unico che doveva (Sistemi operativi) si è limitato a un paio di concetti teorici molto generali ...) ho provato a guardare un po io ma non ho trovato nulla di esaustivo... Per quanto riguarda il sistema operativo, bhe io pensavo di farlo girare sotto windows...

    Il concetto dietro il "trace route" è tutto sommato semplice (lo spiega wikipedia qui ad esempio). Visto che non conosci bene la JNA e (da quanto posso intuire io) probabilmente nemmeno le questioni sulle API native, non credo che sia la cosa migliore partire in quarta per fare un "trace route".
    Ma teoricamente lo so come funziona (l'ho "studiato" anche con lo stesso professore per cui devo realizzare questo programma) il problema è che non so come fare (non è che non conosco bene le JNA e le API, non le conosco affatto ... il problema è cosa faccio altrimenti?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: Re: Moderazione

    Originariamente inviato da Gipple
    io infatti avevo capito che rendesse gran parte delle funzioni native utilizzabili dallo stesso programma (cioè indipendentemente che giri sotto linux oppure sotto windows).
    No, è solo un "ponte", a livello più astratto rispetto a JNI, tra la applicazione Java e una qualunque funzione usabile a livello "nativo". JNA non "mappa" le singole funzionalità del S.O. in modo che tu possa invocarle indipendentemente dal S.O. usando una stessa classe/metodo!!!

    Sei tu che devi fornire a JNA una "descrizione" della funzione da invocare, dicendo come si chiama, in quale libreria nativa si trova, cosa riceve/restituisce, ecc...

    Ma almeno hai guardato gli esempi???

    Originariamente inviato da Gipple
    Per quanto riguarda le API .. bhe quello sono a digiuno totale
    E questo allora è un grosso problema ....

    Originariamente inviato da Gipple
    Per quanto riguarda il sistema operativo, bhe io pensavo di farlo girare sotto windows...
    Bene, allora per la documentazione sulle API di Windows, trovi tutto su MSDN:

    http://msdn.microsoft.com/en-us/library/

    Ma ripeto che se non hai mai visto nulla sulle API native, in particolare di Windows .... su MSDN girerai solo a vuoto ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41

    Re: Re: Re: Moderazione

    Originariamente inviato da andbin
    No, è solo un "ponte", a livello più astratto rispetto a JNI, tra la applicazione Java e una qualunque funzione usabile a livello "nativo". JNA non "mappa" le singole funzionalità del S.O. in modo che tu possa invocarle indipendentemente dal S.O. usando una stessa classe/metodo!!!

    Sei tu che devi fornire a JNA una "descrizione" della funzione da invocare, dicendo come si chiama, in quale libreria nativa si trova, cosa riceve/restituisce, ecc...

    Ma almeno hai guardato gli esempi???
    Si, ma ammetto che essendomi autoconvinto di una cosa errata poichè avevo tradotto male l'incipit della descrizione ho frainteso il tutto anche guardando gli esempi :/

    Originariamente inviato da andbin
    E questo allora è un grosso problema ....

    Bene, allora per la documentazione sulle API di Windows, trovi tutto su MSDN:

    http://msdn.microsoft.com/en-us/library/

    Ma ripeto che se non hai mai visto nulla sulle API native, in particolare di Windows .... su MSDN girerai solo a vuoto ...
    Grazie mille per il link, ci ho dato un occhiata e continuerò a farlo anche oggi in maniera più approfondita... spero di riuscire a saltarci fuori :/

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Esempio

    Originariamente inviato da Gipple
    Grazie mille per il link, ci ho dato un occhiata e continuerò a farlo anche oggi in maniera più approfondita... spero di riuscire a saltarci fuori :/
    Un semplice esempio forse ti può aiutare. Tra le API Win32 esiste una funzione GetDoubleClickTime() (la documentazione è qui) che fornisce il tempo di doppio click con il mouse (quello che si può configurare da Pannello di controllo -> Mouse).

    codice:
    import com.sun.jna.*;
    import com.sun.jna.win32.*;
    
    public class Prova {
        public static void main(String[] args) {
            int time = MyUser32Lib.INSTANCE.GetDoubleClickTime();
    
            System.out.println("Tempo doppio click = " + time + " millisecondi");
        }
    }
    
    interface MyUser32Lib extends StdCallLibrary {
        MyUser32Lib INSTANCE = (MyUser32Lib) Native.loadLibrary("user32", MyUser32Lib.class);
    
        int GetDoubleClickTime();
    }
    La libreria User32 di Windows è "descritta" definendo una interfaccia che estende StdCallLibrary (perché le API Win32 usano la convenzione di passaggio dei parametri "stdcall") e la libreria viene caricata con quella loadLibrary(). Quel INSTANCE è una "costante".

    Poi nella interfaccia è definito il metodo che corrisponde come nome alla funzione nativa. Il metodo nativo restituisce un UINT. In Java non ci sono tipi unsigned (a parte il char) e comunque il valore fornito da GetDoubleClickTime è sicuramente limitato, quindi non ci sarebbero problemi con il segno e il valore di ritorno in Java va bene come 'int'.

    Il resto mi pare ovvio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41
    Grazie mille ma ammetto di aver capito "bene" il funzionamento delle JNA pasticciando per mio conto creando un programmino stupidissimo (ho visto il tuo esempio solo ora che ho già pasticciato di mio ) non avevo ancora provato a scrivere del codice perchè come al solito tentavo di arrivare direttamente alla fine ... invece "sporcandomi le mani" ho capito di più e, tra l'altro, non riesco a capire come avevo sbagliato ad interpretare il tutto in primo luogo ...
    Resta il fatto che non conosco le API anche sto provando ad utilizzare il materiale che mi hai linkato ^^

    Volevo però (se posso) abusare della tua gentilezza, mi è stato detto di realizzare un "Semplice" programma che permetta di valutare la bontà di questa libreria, ora a me vengono in mente sempre o cose semplicissime o cose complesse (per questo avevo pensato anche grazie a suggerimenti al TraceRoute, perchè teoricamente non è molto complesso) però non ho molte idee, non è che tu hai qualche consiglio da darmi? Grazie ancora!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da Gipple
    mi è stato detto di realizzare un "Semplice" programma che permetta di valutare la bontà di questa libreria, [...] non è che tu hai qualche consiglio da darmi?
    Guarda, potresti fare molte cose. Ad esempio: data la lettera di un volume ('A', 'B', ecc...) ottenere le informazioni sul volume (nome, tipo di file-system, spazio usato/libero, ecc...). Oppure enumerare i font installati nel sistema. Oppure ancora enumerare i processi in esecuzione. Se invece vuoi fare qualcosa di più "attivo", ad esempio potresti scrivere nel registry di Windows.
    Insomma, le possibilità sono molte .... dimmi cosa vorresti fare e provo a dirti quali funzioni usare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41
    Grazie mille per la disponibilità innanzitutto.
    Devo dire che guardando gli esempi sul sito mi era venuta un idea (forse stupida) di un "Organazier" che controllasse continuamente data e ora di sistema e producesse un avviso acustico e testuale se è presente qualcosa per il determinato orario... (a parte il segnale acustico, più o meno so come fare ^^) però anche la tua ipotesi di informazioni su di un certo supporto non è male

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 © 2024 vBulletin Solutions, Inc. All rights reserved.