Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2009, 22:21   #1
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
[C++]Qt creator - Programmazione di rete a basso livello

Da un paio di giorni mi sto interfacciando con Qt creator e il C++.
La scelta dell'ambiente di sviluppo mi è stata consigliata caldamente
Ho quasi completato il tutorial introduttivo, quello per la rubrica per chi l'avesse utilizzato...
L'ambiente è sicuramente molto funzionale. Ottimo direi, molto semplice da apprendere.

Il fatto delle librerie indipendenti dall'architettura mi ha fatto sorgere alcune domande e incuriosito allo stesso tempo.

Se non ho capito male, i programmi prodotti girano su piattaforme quali Linux e Windows senza ricompilazioni, direttive pragma e quant'altro?

La seconda domanda volge sulla programmazione di rete, ho visto le relative classi disponibili e addirittura dedicate al livello applicazione come QFtp per esempio.. Librerie a basso livello ce ne sono? (Ad esempio mi occorerebbe utilizzare libpcap o Winpcap.... ma queste non sono riprodotte da Qt se non mi sbaglio....
devono essere incluse in qualche modo? Questo mi ridurrebbe la portabilità?

Vi ringrazio per le risposte
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2009, 12:56   #2
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
davvero nessuno sa nulla?
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2009, 13:19   #3
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Bhe il minimo indispensabile è la ricompilazione, cambiando architettura.
Per quanto riguarda librerie esterne con libpcap non avresti grossi problemi visto che esiste sia sotto windows che linux.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2009, 13:24   #4
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
quindi a quanto ho capito, non perdo la portabilità del codice?

e mi basterebbe includere pcap.h e linkare il .file .o, giusto?

Quindi sono libero di crearci una classe?
Il punto è che Qt ancora non lo conosco bene e non so se consente di farlo senza problemi.

grazie.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2009, 13:32   #5
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Se non ho capito male, i programmi prodotti girano su piattaforme quali Linux e Windows senza ricompilazioni, direttive pragma e quant'altro?
No il programma deve essere ricompilato. Solo che se scritto a dovere ti basta solo ricompilare.

Quote:
La seconda domanda volge sulla programmazione di rete, ho visto le relative classi disponibili e addirittura dedicate al livello applicazione come QFtp per esempio.. Librerie a basso livello ce ne sono? (Ad esempio mi occorerebbe utilizzare libpcap o Winpcap.... ma queste non sono riprodotte da Qt se non mi sbaglio....
devono essere incluse in qualche modo? Questo mi ridurrebbe la portabilità?

Vi ringrazio per le risposte
Non uso QTCreator come editor, prefersico il plugin per Visual Studio (soprattutto perchè mi trovo a lavorare con progetti esistenti fatti in Visual Studio).
La portabilità dipende da come gestisci il progetto. Ovviamente dato che devi compilare una versione per ogni sistema operativo puoi usare LoadLibrary/dlopen gestiti tramite preprocessore per caricare dinamicamente le librerie di interesse. Se le librerie espongono una differente interfaccia ti ci vuole un Facade per ricondurle ad una interfaccia comune, in ogni caso un facade ti ci vorrà per la mappatura dei metodi caricati tramite GetProcAddress/dlsym.
L'alternativa è usare il link statico, quello che cambia è che non devi gestire il caricamento dinamico della libreria con relativa mappatura dei metodi.
Rimane sempre la necessità della classe Facade che tramite il preprocessore richiama i metodi della libreria corretta per ogni sistema operativo su cui verrà compilata.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2009, 14:19   #6
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Quote:
Ovviamente dato che devi compilare una versione per ogni sistema operativo puoi usare LoadLibrary/dlopen gestiti tramite preprocessore per caricare dinamicamente le librerie di interesse.
Ma Qt non usa sempre le sue librerie, non sono mica indipendenti? Io non ho intenzione di usare API...

Quote:
Rimane sempre la necessità della classe Facade che tramite il preprocessore richiama i metodi della libreria corretta per ogni sistema operativo su cui verrà compilata.
Questo penso si possa fare per libpcap
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2009, 19:00   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Teo@Unix Guarda i messaggi
Se non ho capito male, i programmi prodotti girano su piattaforme quali Linux e Windows senza ricompilazioni, direttive pragma e quant'altro?
Con la ricompilazione, ma senza cambiare una riga di codice se hai programmato bene e se non ti servono funzionalità non implementate nella libreria QT.
Quote:
Originariamente inviato da Teo@Unix Guarda i messaggi
La seconda domanda volge sulla programmazione di rete, ho visto le relative classi disponibili e addirittura dedicate al livello applicazione come QFtp per esempio.. Librerie a basso livello ce ne sono? (Ad esempio mi occorerebbe utilizzare libpcap o Winpcap.... ma queste non sono riprodotte da Qt se non mi sbaglio....
devono essere incluse in qualche modo? Questo mi ridurrebbe la portabilità?
Librerie di così basso livello non ci sono. Puoi usare libpcap come la useresti in un qualsiasi altro programma C++, solamente diventano queste ultime a limitarti la portabilità del codice sorgente. Quindi ti dovrai ingegnare a scrivere codice portabile fra Windows e Linux nella parte che utilizza la libpcap.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2009, 20:55   #8
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Ho capito.
Secondo te avrei problemi a realizzare una classe con pcap per poi poterla utilizzare in modo adeguato assieme alle altre classi di Qt?

Io quel che farei così adesso che ci penso è utilizzare le pragma direttive del tipo:

Codice:
#if defined(WIN32)
#define <WinPcap.h>
#define <bpf.h>     //di questo non sono sicuro
#else /* UNIX */
#define <pcap.h>
#define <bpf.h>
così creerei una classe da poter usare sia su linux che su windows.... anche perchè le funzioni sono poi per la maggior parte identiche a parte la versione per windows che ne ha alcune in più.
più la ricompilazione...

però ora che stò cercando in rete, sembrerebbe già esistano classi costruite con libpcap.
http://analyzer.polito.it/docs/inter...s.htm#_details

ma queste che vi ho linkato, mi sembra non siano portabili su linux...
scusate ma le classi me le sono studiate, ma ancora non le stò utilizzando.... pertanto non ne ho esperienza.

Grazie mille.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 07:27   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quella è stata creata per le wxWidgewts. Un altro framework multipiattaforma. Comunque la potresti adattare sostituendo le wxString con le QString e aggiungendo dove serve la compatibilità con Windows.

La direttiva standard dovrebbe essere #ifdef senza le parentesi.

PS: mi sa che ci sarebbe molto da modificare, perché va a scrivere direttamente su un wxFrame, mi sembra creato in maniera un po' assurda quel componente.

Ultima modifica di cionci : 12-12-2009 alle 07:29.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 15:04   #10
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Ok, grazie.

a questo punto ho deciso di costruirne una da capo. Così servirà anche da esercizio.
Se ho problemi posto naturalmente.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2009, 21:41   #11
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Scusate, una cosa.
Cosa mi conviene fare? creo un nuovo progetto e inserisco sia la classe chi il codice del programma o creo la classe separatamente?

Inoltre mi sarebbe sufficiente includere i sorgenti di libpcap, o vi è una procedura per aggiungere librerie esterne?

Grazie!
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2009, 23:04   #12
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Quote:
Originariamente inviato da Teo@Unix Guarda i messaggi
Scusate, una cosa.
Cosa mi conviene fare? creo un nuovo progetto e inserisco sia la classe chi il codice del programma o creo la classe separatamente?

Inoltre mi sarebbe sufficiente includere i sorgenti di libpcap, o vi è una procedura per aggiungere librerie esterne?

Grazie!
installa sul tuo sistema libpcap, poi nel file .pro del tuo progetto QT aggiungi:

LIBS += -L/path_headers_libpcap -lpcap
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2009, 07:57   #13
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Quote:
Originariamente inviato da vizzz Guarda i messaggi
installa sul tuo sistema libpcap,
intendi scompattare l'archivio contenente include e .lib, giusto? Su linux vi è la possibilità di utilizzare un installatore, pcap-dev... su windows non mi sembra vi sia....
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2009, 13:21   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Su Windows devi solo scompattare l'archivio.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2009, 13:48   #15
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Già infatti , ho fatto così e mi è bastato.

Ora sto tentando di crearmi la famosa classe seppur le pcap abbiano già una buona interfaccia per utilizzarle... ma come detto, per iniziare va bene.

Ora, siccome le funzioni di libreria accettano stringhe char, io sono comuque costretto ad utilizzare il tipo char e non QString corretto?
Un'altra cosa... la classe la sto generando direttamente dentro il progetto, però mi chiedo se sarebbe meglio crearla separatamente.

Vi ringrazio.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Qualcomm 'schiaccia' Arm in tribunale: v...
Meta spinge sull'indipendenza da NVIDIA:...
Spotify rivoluziona la sua guida: Daniel...
Sora 2: la seconda generazione del model...
Nuovo obiettivo FE 100mm F2.8 Macro GM O...
Steelseries Arctis Nova Elite: le prime ...
30 anni di PlayStation da indossare: arr...
Amazon lancia gli Echo più potent...
Amazon rinnova la gamma Fire TV: ecco le...
Ring lancia le sue prime videocamere con...
Blink amplia la gamma di videocamere di ...
Jaguar Land Rover riprende (gradualmente...
HONOR inaugura il primo ALPHA Flagship S...
Yamaha: ecco il brevetto del 'finto moto...
'Console obsoleta e utenti ingannati': u...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:42.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v