Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-05-2003, 09:19   #1
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
quali funzioni per accedere al datagramma ethernet in linux

ciao, sto cercando dei link che descrivano le union e le struct che permettono di accedere al pacchetto ethernet...sto cercando da mezz'ora e non ho trovato nulla!
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2003, 10:05   #2
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
Prova a vedere qui dentro:

linux/if_ether.h
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2003, 17:10   #3
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
si c'avevo già guardato....in effetti il mio problema è più che altro di "formattazione"...per esempio un indirizzo fisico ethernet ( 6 coppie di cifre esadecimali separate dai : ) lo vorrei stampare così e invece me lo dà in decimale....poi ho anche dei problemi a stampare ( nel senso di cout<< o printf ) gli indirizzi ip quadripuntati..insomma mi incasino con htons inet_toa eccetera... se sapete dove trovare un buon tutorial sulla programmazione di rete oppure un bel sorgente da analizzare ( che per me è la cosa migliore.....)che faccia uso di ethhdr fatemelo sapere ...

ps: leggere gli header file non è proprio semplicissimo..... cosa vuol dire #endif ???
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2003, 13:29   #4
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
E' una direttiva al compilatore :

Solitamente comincia così:

#ifndef PIPPO
...
#endif

Se non è definito PIPPO... Per gli include si fa sempre questa cosa:

#ifndef PIPPO_H
#define PIPPO_H
...
#endif

Serve per evitare di includere più volte gli stessi header...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 08:43   #5
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho un'altra domanda: se accedo all'header di un pacchettto ip che funzioni devo usare per trasformare l'indirizzo ip ( 32 bit) nella notazione quadripuntata che tutti conosciamo?? (accedo ai cambi s_addr[32] e d_addr[32] tramite un puntatore alla struct iphdr)...sono giorni che cerco questa funzione ma non l'ho trovata...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 09:03   #6
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
Io su Win uso inet_ntoa...dovrebbe essere la stessa...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 19:16   #7
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
si ma probabilmente la usi su un puntatore dereferenziato alla struct sockaddr_in..ora sono su win e il sorgente ce l'ho in una partizione linux...inet_ntoa non può essere applicata direttamente ai campi indirizzi dell'header ip.....sto impazzendo...oltretutto non sono ancora riuscito a trovare la funzione che trasforma l'indirizzo mac decimale nella notazione normale....mi ci vorrebbe una enciclopedia con tutte le funzioni del c++
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 19:54   #8
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
Ah...ma te vuoi il dotted decimale dell'indirizzo MAC ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2003, 16:22   #9
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
no voglio la versione esadecimale saperata da :
per esempio 00:00:e3:99:f4:00
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2003, 16:29   #10
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
Non te la puoi calcolare da solo ? E' banale
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 07:50   #11
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
mmmm...si tratterebbe di prendere 8 bit per volta (= due cifre esadecimali) e stampare un : tra ogni coppia....come faccio però a prendere 8 bit per volta da un numero di 48 bit ?( castarli in hex è facile)...
sto pensando che si potrebbe ottenere questa informazione ( x l'host, non per chi si collega) anche interrogando il dirver della scheda di rete...il guaio è che non ho la minima idea di come si faccia...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 08:43   #12
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
Dimmi come sono memorizzati...sia il MAC che l'ip (soprattutto il tipo mi interessa)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 16:03   #13
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho risolto il discorso MAC, avevi ragione, si fa prima a farlo che a dirlo...nell'header ethernet gli indirizzi mac di origine e destinazione sono array di 6 elementi di tipo char... nel c standard manca il tipo stringa ma cout e cin possono essere usati per l'input e l'output si array di char ( e solo di char, ovviamente ) quindi pesavo che bastasse una normale cout...ho risolto in modo piuttosto semplice: con un ciclo for prendo ciascuno dei 6 elementi , lo casto in un int e poi gli dico di sputarlo fuori in esadecimale e se l'elemento non è il sesto di affiancare i:...perfetto...

eccoti il codice:
for (int i = 0; i<6 ; i++)
{
cout<<hex<<int(ethernet_datagram->h_dest[i]);
if (i!=5) cout<<":";
}
cout<<endl;

hex lo usi includendo iomanip.h...

per l'indirizzo ip la vedo dura....perchè nell'header IP è un u_int32_t probabilmente un unsigned int che i programmatori di ip.h hanno definito da qualche altra parte...inet_ntoa forse va bene però il vi mi dice che non riesce a castare un u_int32_t in un tipo non scalare ( =l'indirizzo ip nella notazione classica):
suggerimenti?
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 16:25   #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
Si faceva bene anche con il C...
Codice:
char tmp[18];
sprintf(tmp,"%x:%x:%x:%x:%x:%x", e->h_dest[0], e->h_dest[1], ....);
Visto che in_addr è così:
Codice:
struct in_addr {
  union {
          struct { u_char s_b1,s_b2,s_b3,s_b4; }   S_un_b;
          struct { u_short s_w1,s_w2; }            S_un_w;
          u_long                                   S_addr;
  } S_un;
};
...prova così:
Codice:
in_addr addr;
addr.S_un.S_addr = (u_long)il_tuo_u_int32_t;
inet_ntoa(addr);
Prova così... Se ti viene visualizzato al contrario dimmile che bisogna convertirlo...
Altrimenti si ricorre al trucco:
Codice:
unsigned char *ip = (unsigned char *)&il_tuo_u_int32_t;
Dopo accedendo da ip[0] a ip[4] hai le varie parti dell'ip...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 19:03   #15
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
nell'ultimo pezzo di codice che significato ha & ?
grazie cmq domani provo..
forse non è cmq complicato, per esempio basterebbe prendere 8 bit alla volta dei 32 dell'indirizzo ip e castarli a int uno per uno...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 19:14   #16
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:
Originally posted by "BountyKiller"

nell'ultimo pezzo di codice che significato ha & ?
L'indirizzo della variabile... Gli faccio un cast ad un puntatore a char e poi mi guardo un byte alla volta...
Quote:
Originally posted by "BountyKiller"

forse non è cmq complicato, per esempio basterebbe prendere 8 bit alla volta dei 32 dell'indirizzo ip e castarli a in uno per uno...
Certo... Puoi semplicemente fare un AND con le varie maschere e con degli shift riportare i vari byte nella posizione meno significativa...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2003, 08:35   #17
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
scusa domanda scema....è ovvio che è l'operatore address of ....sarà il caldo ....cmq con i due esempi che mi hai proposto ho dei problemi...il primo mi dice che S_un non è un campo della struct in_addr ( e c'ha ragione..) nel secondo mi dice che è illegale il casting .. quasi proverei con la mascheratura..un po' rozzo ma semplice...non c'è bisogno di convertire in binario giusto? ( i numeri sono numeri cmq li rappresenti)...piuttosto per fare l'and bit a bit ? non l'ho mai fatto...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2003, 11:49   #18
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho risolto come dicevo io...è incredibile come certe volte uno perde tempo a pensare a cose complicate e invece basta scrivere due righe di codice e risolvi il problema in cinque minuti...
eccoti la funzione con un main di prova:

//funzione che riceve in input il campo indirizzo ( sorgente e/o destinazione) dell'header IP

#include <iostream.h>
#include <iomanip.h>

void StampaIP(unsigned int indirizzo)
{
unsigned int maschera1=0x000000FF;
unsigned int maschera2=0x0000FF00;
unsigned int maschera3=0x00FF0000;
unsigned int maschera4=0xFF000000;
unsigned int ris1 = indirizzo & maschera1;
unsigned int ris2 = indirizzo & maschera2;
unsigned int ris3 = indirizzo & maschera3;
unsigned int ris4 = indirizzo & maschera4;
ris2 >>= 8;
ris3 >>= 16;
ris4 >>= 24;
cout<<ris4<<"."<<ris3<<"."<<ris2<<"."<<ris1<<endl;
}

void main()
{
unsigned int indirizzo;
cout<<"inserire un numero di 8 cifre esadecimali:"<<endl;
cin>>hex>>indirizzo;
cout<<"l'indirizzo IP e': ";
StampaIP(indirizzo);
}

l'ho provato adesso ed è ok: se indirizzo è effettivemente saddr o daddr va passato in host to network long, non so se è linux (mandrake9.1) che lo vuole così o la cpu del mio portatile ( pentium3 m) o tutti e due....pensandoci bene non è necessaria la mascheratura, basta fare 4 shift e dopo ciascuno shift assegnare i vari pezzi dell'indirizzo IP.
ora grazie alla mia funzione posso levarmi dalle palle la structsockaddr_in e usare solo i campi sadddr e daddr dell'header ip il che mi sembra più chiaro e pulito ...se ci sono altri problemi mi rifaccio vivo in questo thread, per intanto ti saluto e ti ringrazio (mi sembri un programmatore professionista..sbaglio? )
ciao!!
BK

ps: il programma che sto scrivendo è uno sniffer per rete locale..
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2003, 12:01   #19
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho un altra domanda> lo sniffer inizialmente chiede quanti pacchetti sniffare e per interromperlo prima che abbia finito devo schiacciare ctrl + c io vorrei che controllasse se, mentre sniffa, l utente ha premuto il tasto ESC, e se si si interrompe e fa vedere quello che ha sniffato...come faccio a fare un monitoraggio del tasto ESC?
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2003, 17:15   #20
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
cionci ci sei?? ( ma perchè con konqueror non posso usare le emotincohns????? )
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Sony WH-1000XM4C, Amazon taglia il prezz...
AliExpress, questo monitor KTC da 27'' &...
TikTok come porta d'ingresso a OnlyFans,...
La Terra ha una mini-luna temporanea: ec...
Amazon, sconto EXTRA del 22% su videogio...
Windows 11, il Patch Tuesday di novembre...
Lenovo aggiorna la gamma ThinkSystem: pr...
Serie Galaxy S27 in arrivo: prezzo in au...
Alexa.com è disponibile in Italia: Alexa...
AliExpress, 4 tablet a super prezzi per ...
Google Gemini: i contenuti di Gmail e Dr...
Microsoft ha scoperto come trasformare u...
Chrome 157, meglio aggiornare subito: Go...
BYD e Geely all'assalto della Formula 1?...
Le novità di Windows 11 per il Pa...
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: 14:47.


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