Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
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


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Apple apre Music Hall, una sala concerto...
Adobe arriva su Gemini e Claude: nuove f...
Non solo Fideuram: quasi 2 milioni di it...
I lettori CD di fascia alta potrebbero s...
Tutto il meglio di Amazon weekend: 5 nov...
Proscenic P15+ a 113€ su Amazon: scopa e...
TP-Link Wi-Fi 6 a 59,99€ e Tenda 4G03 Pr...
Un quasi top di gamma a 461€: lo smartph...
Roborock Saros 20 Neo e Flow Complete: 3...
Mac mini si trasforma: chip a 2 nanometr...
Su Amazon c'è un super TV Samsung...
La Cina ha rilasciato un satellite dallo...
Il satellite LINK è rientrato nel...
L'ESA risponde alle critiche di Jared Is...
La NASA annuncia il nuovo telescopio spa...
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: 18:11.


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