Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2009, 23: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, 13: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, 14: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, 14: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, 14: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, 15: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, 20: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, 21: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, 08: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 08:29.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 16: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, 22: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 14-12-2009, 00: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, 08: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, 14: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, 14: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


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Un gruppo di ladri ha usato Google Maps ...
Apple non si fida di Samsung per la real...
Windows 11: un nuovo driver nativo mette...
Vi hanno regalato buoni Amazon? Intanto ...
Via acari, polvere e sporco da materassi...
Cuffie Beats in super offerta su Amazon,...
Xbox Cloud Gaming arriva su Amazon Fire ...
Un blackout a San Francisco manda in til...
Windows 11 è diventato più...
Apple cambia strategia a causa della cri...
007 First Light: uscita rimandata di due...
Samsung Galaxy A37 e A57: il comparto fo...
DAZN lancia la sua offerta di Natale: My...
Gigabyte fa marcia indietro? Sparito il ...
Alcuni rivenditori giapponesi bloccano l...
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: 20:42.


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